我想将日期选择器中的日期保存到sqlserver中。
但是当pc上使用不同的日期格式时,日期会改变年月日。
例如:我的系统上的短日期格式:dd- mm -yyyy
DatePicker: 01 - 2015年7月——
当我将日期保存到数据库时,它将被保存为01-07-2015。
但是当我更改系统日期格式时,日期和月份被更改了
代码:我的系统上的短日期格式:dd-MM-yyyy
DatePicker: 01 - 2015年7月——
当我将日期保存到数据库时,它将被保存为07-01-2015。
//Set dateTimePicker to DateTime variable
DateTime dateSales = dateTimePicker1.Value;
// Create SQL connection
System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection(Connection.connectionString());
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
//Create query with values and execute query
cmd.CommandText = "Insert into CarsSellout (CustomerID, dateSales) VALUES ('" + CustomerID + "', '" + dateSales + ")";
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();
我知道SQL查询谁没有参数化!
我怎么能解决这个问题?到目前为止,通过编程改变格式还没有成功!
请帮帮我!!
你有一个选择错误数据类型的坏习惯。
如果您将DateTime
值保存到SQL Server,则将其保存为DateTime
。Do NOT保存它们的字符串表示。
这就是为什么,改变你的dateSales
列类型为datetime
或datetime2
和传递你的dateSales
值直接到你的参数化查询。
DateTime dateSales = dateTimePicker1.Value;
using(var con = new SqlConnection(Connection.connectionString()))
using(var cmd = con.CreateCommand())
{
cmd.CommandText = "Insert into CarsSellout(CustomerID, dateSales) VALUES(@id, @date)";
cmd.Parameters.Add("@id", SqlDbType.Int).Value = CustomerID;
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dateSales;
con.Open();
cmd.ExecuteNonQuery();
}
我强烈怀疑你的CustomerID
应该是数字类型(基于它的名字),这就是为什么在我的例子中把它的参数写为SqlDbType.Int
。如果不是(因为您使用了单引号),则将其参数更改为相关的SqlDbType
。