我有一个带有日期(dd-MM-yyyy)的数据库,和一个带有DateTimePicker(MM-yyyy)的Winforms。
当我在DateTimePicker中选择一个日期时,如何在数据库中搜索?
var sqlcomm = new SqlCommand($"SELECT SUM(sales) FROM table_name WHERE date = '{dateTimePicker1.Value.ToString("yyyy-mmm")}'", conn);
错误:
操作符类型冲突:日期与int不兼容
答案 0 :(得分:1)
使用 PARAMETERS (参数)-始终应该使用!这些阻止了SQL注入,并且使指定各种类型的各种数据变得更加容易。
类似这样的东西:
string query = "SELECT SUM(sales) FROM table_name WHERE date = @someDate;";
SqlCommand sqlcomm = new SqlCommand(query, conn);
sqlcomm.Parameters.Add("@someDate", SqlDbType.Date).Value = dateTimePicker1.Value;
简洁,安全的代码-无需弄乱日期格式并将所有内容转换为字符串,无需弄清楚要使用多少个单引号或双引号-只需使用简洁,正确的ADO.NET代码即可应该是。