同時に 2 つのテーブルに新しい脅威を挿入しようとしています。SQL管理スタジオ内で実行する場合のSQLステートメントは、魅力のように機能します。しかし、C#コードビハインドでsqlステートメントをコーディングしてaspxページを実行しようとすると、空を挿入できないようなものが返されます。さまざまな SQL ステートメントを試しましたが、何も機能していないようです。
元の声明は次のとおりです。
DECLARE @BrugerNavn NVARCHAR(50) = 'Bent'
DECLARE @Besked NVARCHAR(MAX) = 'Bents besked'
DECLARE @TraadNavn NVARCHAR(50) = 'Bents tråd'
DECLARE @KategoriID INT = 1
INSERT INTO TraadTabel
VALUES (@TraadNavn, @KategoriID)
INSERT INTO Beskeder
VALUES (@Besked, SCOPE_IDENTITY(), @BrugerNavn)
私のC#コードは次のとおりです:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string BrugerNavn = txtBrugerNavn.Text;
string TradNavn = txtTraadNavn.Text;
string Besked = txtBesked.Text;
int KategoriID = int.Parse(Request.QueryString["id"]);
SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["SimpeltForumConnectionString"].ConnectionString);
SqlCommand FirstLoad = new SqlCommand("INSERT INTO TraadTabel VALUES (@TradNavn, @KategoriID)", conn);
//SqlCommand SecondLoad = new SqlCommand("INSERT INTO Beskeder VALUES (@Besked, SCOPE_IDENTITY(), @BrugerNavn)", conn);
SqlCommand SecondLoad = new SqlCommand("INSERT INTO Beskeder VALUES (@Besked, SELECT IDENT_CURRENT(IndlaegID)+1, @BrugerNavn)", conn);
FirstLoad.CommandType = CommandType.Text;
FirstLoad.Parameters.AddWithValue("@TradNavn", TradNavn);
FirstLoad.Parameters.AddWithValue("@KategoriID", KategoriID);
SecondLoad.Parameters.AddWithValue("@Besked", Besked);
SecondLoad.Parameters.AddWithValue("@BrugerNavn", BrugerNavn);
using (conn)
{
conn.Open();
FirstLoad.ExecuteNonQuery();
SecondLoad.ExecuteNonQuery();
}
}
ご覧のとおり、「SCOPE_IDENTITY()」行をコメントアウトして残しました。これは、SQL Management Studio 内からトリガーされたときに実際に機能するコードであるためです。そして、ブラウザでエラーを返すのはスコープ ID だと思います。どうすればいいのかわからないので、助けてください。ありがとう。