C# 如何在asp.net中从sql server 2008获取两个日期之间的数据

C# 如何在asp.net中从sql server 2008获取两个日期之间的数据,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在使用引用的日期选择器控件来选择日期。我得到了错误 从字符串转换日期和/或时间时转换失败 公共数据集comsn(字符串x,DatePickerControl.DatePickerA,DatePickerControl.DatePickerB) { ConnectionStringSettings connectionstringsql=ConfigurationManager.ConnectionStrings[“plprojectConnectionString”]; SqlConnect

我正在使用引用的日期选择器控件来选择日期。我得到了错误

从字符串转换日期和/或时间时转换失败

公共数据集comsn(字符串x,DatePickerControl.DatePickerA,DatePickerControl.DatePickerB)
{
ConnectionStringSettings connectionstringsql=ConfigurationManager.ConnectionStrings[“plprojectConnectionString”];
SqlConnection connectionsql=新的SqlConnection(connectionstringsql.ConnectionString);
if(connectionsql.State!=System.Data.ConnectionState.Open)
{
connectionsql.Open();
}

SqlCommand cmd=new SqlCommand(“从comm中选择一个_id、commtyp、comm、primm、c_id、agent,其中a_id='“+x+””和date>='“+a.CalendarDate+””和date您可以通过控制日期格式来实现这一点。当作为字符串提供给sql server时,我总是使用“YYYY-MM-DD”,即使用ToString('yyyyy-MM-DD'))来格式化仅数据的字符串在日期字段上

但是,最好将查询转换为参数驱动的sql

i、 例如,a.Calendardate.ToString(“yyyy-MM-dd”)代替“date>=”

使用“日期>=@ADate”

并将参数值提供为

cmd.Parameters.Add("ADate", SqlDbType.DateTime).Value = a.Calendardate

我假设您的datepicker具有“DateTime”属性,我将a.Calendardate视为DateTime属性

您可以通过使用参数化查询避免异常和sql注入

替换:

SqlCommand cmd = new SqlCommand("select a_id,commtyp,comm,primm,c_id,agent from comm where a_id= '" + x + "' AND  date>= '" + a.CalendarDate + "'  AND date <= '" + b.CalendarDate + "' ", connectionsql);

SqlCommand cmd=new SqlCommand(“从comm中选择一个_id,commtyp,comm,primm,c_id,agent,其中a_id='“+x+”,date>='“+a.CalendarDate+”,date=@a和date我怀疑你的日历选择器正在返回字符串。请尝试DateTime.Parse(a.CalendarDate)先生,我检查过了,它不起作用
SqlCommand cmd = new SqlCommand("select a_id,commtyp,comm,primm,c_id,agent from comm where a_id= '" + x + "' AND  date>= '" + a.CalendarDate + "'  AND date <= '" + b.CalendarDate + "' ", connectionsql);
string sql = "select a_id,commtyp,comm,primm,c_id,agent from comm where a_id= @x AND  date>= @a  AND date <= @b "
var cmd = new SqlCommand(sql);
cmd.Parameters.Add("@x", SqlDbType.NVarChar, x);
cmd.Parameters.Add("@a", SqlDbType.DateTime, a);
cmd.Parameters.Add("@b", SqlDbType.DateTime, b);
cmd.Connection = connectionsql;