ここにデータベースのストアドプロシージャがあります。データベースを更新しないストアドプロシージャasp.net c#
CREATE PROCEDURE Taskedb_Insert
(
@nNewID int output,
@sFromEmail varchar(200) = NULL,
@sToEmail varchar(200) = NULL,
@sEmailSubject varchar(400) = NULL,
@sEmailBody varchar(MAX) = NULL,
@dEmailDate datetime = NULL
)
AS
BEGIN
INSERT INTO [Taskedb]
(
FromEmail,
ToEmail,
EmailSubject,
EmailBody,
EmailDate
) VALUES (
@sFromEmail,
@sToEmail,
@sEmailSubject,
@sEmailBody,
@dEmailDate
)
SELECT @nNewID = @@IDENTITY
END
、これはASP.NET C#の
string connectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=tbd_email_tasks;Integrated Security=True";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlCommand cmd = new SqlCommand("Taskedb_Insert", connection);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlParameter p1 = cmd.Parameters.Add("@nNewID", System.Data.SqlDbType.Int);
p1.Direction = System.Data.ParameterDirection.Output;
SqlParameter p2 = cmd.Parameters.Add("@sEmailSubject", System.Data.SqlDbType.VarChar);
p2.Value = subject;
SqlParameter p3 = cmd.Parameters.Add("@sEmailBody", System.Data.SqlDbType.VarChar);
p3.Value = body;
SqlParameter p4 = cmd.Parameters.Add("@sToEmail", System.Data.SqlDbType.VarChar);
p4.Value = to;
SqlParameter p5 = cmd.Parameters.Add("@sFromEmail", System.Data.SqlDbType.VarChar);
p5.Value = from;
SqlParameter p6 = cmd.Parameters.Add("@dEmailDate", System.Data.SqlDbType.DateTime);
p6.Value = date;
//connection.Open();
cmd.ExecuteNonQuery();
にそれがデータベースを更新していないコードです。私を助けてください。
にそれを変更? –
@PareshJエラーは発生していませんが、このコードはデータベースに何も保存していません。 –
代わりにSCOPE_IDENTITYの使用を検討する必要があります。なぜすべてのパラメータをNULLにデフォルト設定したのか分かりません。値を渡しています。また、変数の前にデータ型を付ける習慣を壊すことを強くお勧めします。データ型を変更する必要がある場合はどうなりますか?すべてのコード行を更新するか、無効なプレフィックスがあります。 –