2016-10-06 14 views
0

ここにデータベースのストアドプロシージャがあります。データベースを更新しないストアドプロシージャ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(); 

にそれがデータベースを更新していないコードです。私を助けてください。

+1

にそれを変更? –

+0

@PareshJエラーは発生していませんが、このコードはデータベースに何も保存していません。 –

+0

代わりにSCOPE_IDENTITYの使用を検討する必要があります。なぜすべてのパラメータをNULLにデフォルト設定したのか分かりません。値を渡しています。また、変数の前にデータ型を付ける習慣を壊すことを強くお勧めします。データ型を変更する必要がある場合はどうなりますか?すべてのコード行を更新するか、無効なプレフィックスがあります。 –

答えて

0

おそらくトランザクションスコープなどにあるかどうかを確認できます。もちろん、私はDB接続とブロックを使用してコマンドをラップします。

1

おかげですべての助け

のための私のテーブルTaskedbが

データ型はnvarchar(50)

を持っていたので、私はこのエラーを得ていたが、私はこのエラーになった67文字の強さを、注入されました。

NVARCHAR(MAX)、あなたが取得しているエラーは何を修正し

問題

関連する問題