如何使用WinForm datetimepicker C#在SQL数据库中搜索

时间:2015-06-02 13:13:56

标签: c# sql-server winforms datetimepicker

我创建了一个连接SQLserver 2014和VisalStudio2013(.NET 4,5),Visal C#的模型。在VB中我有两种形式,在SQL中有一个带记录的表。

在Winform中,我使用了“textbox”,它的类型是 nvarchar (10),用于在SQL数据库中搜索。

**但是在第二个Winform中我想使用“datetimepicker”在SQL数据库中搜索,其中列的类型是 date **

我的代码必须改变这个seach.Becouse给我  :错误7运算符'=='无法应用于'System.DateTime?'类型的操作数和'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;


    }

1 个答案:

答案 0 :(得分:2)

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

根据问题中的代码,这是由行:

引起的
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

- 我无法告诉你哪个,因为我不知道使用此代码的上下文。 (我正在努力使用变量名称,因为它......)