示例代码
DateTime d1 = DateTime.Today;
string t4 = d1.ToString("dd");
string t5 = d1.ToString("MM");
string t6 = d1.ToString("yy");
string d = t4 + "/" + t5 + "/" + t6;
SqlCommand cmd1 = new SqlCommand(
"select company from app where date='"+d.ToString()+"'",connection);
MessageBox.Show(cmd1.CommandText);
SqlDataAdapter da = new SqlDataAdapter(cmd1);
DataTable dt = new DataTable();
connection.Open();
da.Fill(dt);
button1.Text=dt.Rows[0]["company"].ToString();
connection.Close();
错误:
数据类型text和varchar在等于运算符中不兼容。
如何克服此错误?
答案 0 :(得分:2)
您没有向我们提供有关您的架构(或您正在使用的数据库类型)的足够信息,但从根本上说,执行这样的字符串转换是一个坏主意。假设date
确实是DATETIME列或类似的东西,只需将其转换为参数化 SQL语句,并将该值作为参数包含在内。您根本不需要自己执行转换。
DateTime today = DateTime.Today;
using (var command = new SqlCommand("select company from app where date = @p1",
connection))
{
command.Parameters.Add("p1", SqlDbType.DateTime).Value = today;
...
}
您应该使用参数化SQL来实现所有值。除了转换问题,它还避免了SQL注入攻击。
答案 1 :(得分:1)
如果app.date是TEXT类型,您可以使用以下方法之一:
SqlCommand cmd1 = new SqlCommand("select company from app where cast(date as varchar)='"+d.ToString()+"'",connection);