【问题标题】:Operand type clash: date is incompatible with int C#操作数类型冲突:日期与 int C# 不兼容
【发布时间】:2013-10-30 21:13:41
【问题描述】:
        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
    {
        string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Fellipe\\documents\\visual studio 2010\\Projects\\WindowsFormsApplication2\\WindowsFormsApplication2\\PUBS.MDF;Integrated Security=True;Connect Timeout=30;MultipleActiveResultSets=True;User Instance=True";
        SqlConnection conexao = new SqlConnection(strcon);
        conexao.Open();
        SqlDataAdapter Buscar = new SqlDataAdapter("SELECT ROTA, DOCA FROM Planilha4 WHERE D2 =" + monthCalendar1.SelectionStart.ToString("dd/MM/yyyy"), conexao);
        DataTable dt = new DataTable();
        Buscar.Fill(dt);

       SqlDataAdapter sda = new SqlDataAdapter();
       BindingSource bSource = new BindingSource();

       bSource.DataSource = dt;
       dataGridView1.DataSource = bSource;
       sda.Update(dt);


    }

错误是在Buscar.Fill(dt); 抛出的,我想消除这个错误。我正在等待答复。 谢谢

【问题讨论】:

  • 使用参数化查询传递实际日期,而不是尝试连接字符串。
  • 引用您的日期以便轻松解决。

标签: c# sql datatable sql-server-express


【解决方案1】:

如果您在构建后查看生成的 SQL 字符串,您会发现问题所在。日期文字周围没有引号,因此 SQL 将带有斜线的日期视为数学方程式。

您应该考虑使用存储过程或参数化 SQL 字符串来防止此问题。你可以在这个网站上搜索“sql注入漏洞”,看到很多在SQL中使用参数的例子。 Here's a related question.

【讨论】:

    【解决方案2】:

    monthCalendar1.SelectionStart.ToString("dd/MM/yyyy") 前后缺少一些“''”。见下文:

    SqlDataAdapter Buscar = new SqlDataAdapter("SELECT ROTA, DOCA FROM Planilha4 WHERE D2 = '" + monthCalendar1.SelectionStart.ToString("dd/MM/yyyy") + "'", conexao);
    

    此外,如果您对 monthCalendar1 之类的控件有外部依赖关系,我强烈建议您将查询参数化。这是一个简单的例子:

    string command = "SELECT ROTA, DOCA FROM Planilha4 WHERE D2 = @mnthCalendar";
    sqlDA.SelectCommand.Parameters.Add(@mnthCalendar, SqlDbType.DateTime).Value = monthCalendar1.SelectionStart;
    

    【讨论】:

    • 你能说得更具体点吗?
    猜你喜欢
    • 2019-10-31
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多