sql server -如何使用WinForm datetimepicker在sql数据库中搜索

本文关键字:sql 数据库 搜索 datetimepicker WinForm server 何使用 | 更新日期: 2023-09-27 17:52:17

我创建了一个连接SQLserver 2014和VisalStudio2013的模型。在VB中我有两个表单,在SQL中有一个表和记录。

在第一个Winform中,我使用类型为nvarchar(10)的textbox在SQL数据库中进行搜索。

**但是在第二个Winform中,我想在SQL数据库中使用"datetimepicker"进行搜索,其中列的类型是日期 **

对于这个搜索,我的代码中必须改变什么。因为给我操作符"=="不能应用于"System.DateTime?"类型的操作数。' and 'int

如果必须写新代码,应该写什么?

这是第一个表单中搜索

的代码
        textKkKod1.Focus();
        loadSearchData();
        int kochani;
        try
        {
            kochani = Convert.ToInt32(this.textKkKod1.Text);
        }
        catch
        {
            MessageBox.Show("Error 404");
            return;
        }
        string kodNaKonduktor = this.textKkKod1.Text;
        var koch = db.Koches.Where(k => k.CODEK == kochani).FirstOrDefault();
        if (koch == null)
            return;
        this.textKkKod1.Text = Convert.ToString(koch.CODEK);
        //this.textKkKochaniData1.Value = Convert.ToDateTime(koch.DATER);
        this.textKkRazpiska1.Text = koch.Razpiska;

    }
    private void loadSearchData()
    {

        int kochani;
        try
        {
            kochani = Convert.ToInt32(this.textKkKod1.Text);
        }
        catch
        {
            MessageBox.Show("Eror 404");
            return;
        }
        kochBindingSource.DataSource = db.Koches.Where(k => k.CODEK == kochani).ToList();
        this.gridKochaniKonduktor1.DataSource = this.kochBindingSource.DataSource;

    }

sql server -如何使用WinForm datetimepicker在sql数据库中搜索

您得到的错误是说您正在尝试将日期与整数进行比较。不能比较两个不同类型的对象

从你的问题中的代码,这是由行:

var koch = db.Koches.Where(k => k.CODEK == kochani).FirstOrDefault();

同样的错误也会出现在这里:

kochBindingSource.DataSource = db.Koches.Where(k => k.CODEK == kochani).ToList();

我们知道kochani是一个整数,这意味着CODEK一定是一个日期时间。(除非我错过了,否则你还没有向我们展示CODEK是如何声明/初始化/赋值的。)

您需要将CODEK转换为integer:(我怀疑您实际上能够将日期存储为整数,最好使用long)

long codekAsLong = long.Parse(CODEK.ToString("yyyyMMddHHmmss"));

或者将kochani转换为datetime来解决这个问题。

DateTime kochaniAsDT = new DateTime(1970, 1, 1).AddMilliseconds(kochani);
//This assumes kochani represents milliseconds

-I不能告诉你是哪个,因为我不知道这段代码使用的上下文。(我正在努力与变量名称足够,因为它是…)