【问题标题】:how to convert dataAndTimePicker value to a string in c#如何在c#中将dataAndTimePicker值转换为字符串
【发布时间】:2018-05-27 00:30:23
【问题描述】:

我需要帮助,我正在尝试编写一个查询字符串,该字符串根据 dataAndTimePicker 工具中选取的特定日期获取数据,但我不断收到相同的异常 “转换时转换失败字符串中的日期和/或时间。” 这是我试过的代码

str = "select imId,imCustomer,imAmount,imDiscount,imTotal,imPaid,imPayType,imDate from invoiceMaster where imDate >= '" + startDate.Value.ToString("dd/MM/yyyy") + "' and imDate <= '" + endDate.Value.ToString("dd/MM/yyyy") + "'";
SqlDataAdapter da = new SqlDataAdapter(str, declerations.con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        dgvInvoice.DataSource = dt;

【问题讨论】:

  • 阅读this,了解如何按照您要求的方式进行操作,以及为什么不应该这样做以及应该做些什么,这与下面的答案所暗示的差不多。
  • 您确定您的日期以字符串形式存储在数据库中吗?

标签: c# sql .net database visual-studio


【解决方案1】:

始终使用参数而不是将值直接放入 sql 字符串中

 str = "select imId,imCustomer,imAmount,imDiscount,imTotal,imPaid,imPayType,imDate from invoiceMaster where imDate >= @StartDate and imDate <= @EndDate";
 SqlCommand cmd = new SqlCommand(str, declarations.con);
 cmd.Parameters.AddWithValue("@StartDate", startDate.Value);
 cmd.Parameters.AddWithValue("@EndDate", endDate.Value);
 SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    dgvInvoice.DataSource = dt;

【讨论】:

  • 仍然收到异常“必须声明标量变量”
【解决方案2】:
str = "select imId,imCustomer,imAmount,imDiscount,imTotal,imPaid,imPayType,imDate from invoiceMaster where imDate >= '" + Convert.ToDateTime(startDate.Value) + "' and imDate <= '" + Convert.ToDateTime(endDate.Value) + "'";
SqlDataAdapter da = new SqlDataAdapter(str, declerations.con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        dgvInvoice.DataSource = dt;

【讨论】:

    猜你喜欢
    • 2022-10-05
    • 2016-01-14
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多