我试图同时在两个表中插入一些新的威胁。在 sql management studio 中运行的 sql 语句就像一个魅力。但是当我尝试做一个 aspx 页面,在 C# 代码隐藏中编码 sql 语句时,它返回的东西就像它不能插入空一样。我尝试了不同的 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 中触发时。而且我认为它是范围标识,它在我的浏览器中返回错误。我不知道该怎么办,请帮忙。谢谢。