首先:停止将您的 SQL 代码连接在一起!这是对 SQL 注入攻击的邀请,而且对性能也非常不利 - 请改用参数化查询。
如果你这样做 - 你也不会遇到日期时间/字符串转换问题......
DateTime
其次: SQL Server 中仅日期的“安全”格式是YYYYMMDD
-没有任何破折号- 只有这种格式才能保证它可以在任何 SQL Server 上运行,无论您的语言、区域和日期格式设置如何。
第三。如果您想执行存储过程 - 我建议使用这种方法:
System.DateTime myDate = default(System.DateTime);
myDate = DateTimePickerPrint.Value;
using (SqlConnection con = new SqlConnection(your-connection-string-here))
using (SqlCommand cmd = new SqlCommand("dbo.Save_Quotation_Bookshop", con))
{
// tell ADO.NET it's a stored procedure (not inline SQL statements)
cmd.CommandType = CommandType.StoredProcedure;
// define parameters
cmd.Parameters.Add("@QuotationNo", SqlDbType.VarChar, 50).Value = txt_QutationNo.Text;
cmd.Parameters.Add("@CustomerCode", SqlDbtype.VarChar, 25).Value = txt_CusCode.Text;
cmd.Parameters.Add("@SaleDate", SqlDbType.DataTime).Value = myDate;
// open connection, execute stored procedure, close connection again
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
Don't use EXEC ......
as an inline SQL statement - tell ADO.NET that you're executing a stored procedure, supply the parameters - and you're done!