最初に: SQLコードを連結するのはやめましょう! これは SQL インジェクション攻撃の誘因であり、パフォーマンスにも非常に悪いため、代わりにパラメーター化されたクエリを使用してください。
そうすれば、日時/文字列変換の問題も発生しません.....
DateTime
第二に、SQL ServerYYYYMMDD
の日付のみの「安全な」形式は、ダッシュなしです。この形式だけが、言語、地域、および日付形式の設定に関係なく、任意の 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();
}
インライン SQL ステートメントとして使用しないEXEC ......
でください。ストアド プロシージャを実行していることを ADO.NET に伝え、パラメータを指定してください。そうすれば完了です。