Sql 在 C# 中标识仅插入值 0
Sql Identity Inserting Value Only 0 in C#
我尝试在 table 的 No 列中使用 Sql Identity。如果我尝试使用 c# 从 table 插入值,总是插入“0”并且身份不工作。我该如何解决这个问题?
SqlCommand Cmd_IdentityOpen;
string SqlIdentityOpen = "SET identity_insert " + cbbox_ltable.Text + " on";
SqlIdentityOpen += " INSERT INTO " + cbbox_ltable.Text + " ([No], [Computer ID], [Name Surname] ) Values ('" + txtbox_lno.Text + "' , '" + cbbox_lcid.Text + "' , '" + txtbox_lnamesurname.Text + "' )";
Cmd_IdentityOpen = new SqlCommand(SqlIdentityOpen, con);
con.Open();
Cmd_IdentityOpen.ExecuteNonQuery();
con.Close();
Table代码
SqlTableCreate += "CREATE TABLE " + txtbox_ltablename.Text + " ([No] int not null IDENTITY(1,1) PRIMARY KEY, [Computer ID] nvarchar(50), [Name Surname] nvarchar(50) )";
如果用户能够并且确实提供了 [No]
值,那么:它不是 SQL 服务器意义上的 IDENTITY
(尽管它仍然可以是主键, ETC);所以决定:
- 如果你想要它是一个
IDENTITY
,不要让用户提供它,不要将它包含在INSERT
中,并使用SCOPE_IDENTITY()
找出在 插入 之后你得到了什么
- 如果您不需要它成为一个
IDENTITY
,请不要将其声明为一个
混合搭配很少奏效。
无关,但是您真的,真的需要研究SQL注入和参数化;该代码非常危险。安全命令更像是:
cmd.CommandText @"
INSERT INTO YourTable ([Computer ID], [Name Surname])
VALUES (@id, @name);
SELECT SCOPE_IDENTITY();");
cmd.Parameters.AddWithValue("@id", cbbox_lcid.Text);
cmd.Parameters.AddWithValue("@name", txtbox_lnamesurname.Text);
var newId = (int)cmd.ExecuteScalar();
我尝试在 table 的 No 列中使用 Sql Identity。如果我尝试使用 c# 从 table 插入值,总是插入“0”并且身份不工作。我该如何解决这个问题?
SqlCommand Cmd_IdentityOpen;
string SqlIdentityOpen = "SET identity_insert " + cbbox_ltable.Text + " on";
SqlIdentityOpen += " INSERT INTO " + cbbox_ltable.Text + " ([No], [Computer ID], [Name Surname] ) Values ('" + txtbox_lno.Text + "' , '" + cbbox_lcid.Text + "' , '" + txtbox_lnamesurname.Text + "' )";
Cmd_IdentityOpen = new SqlCommand(SqlIdentityOpen, con);
con.Open();
Cmd_IdentityOpen.ExecuteNonQuery();
con.Close();
Table代码
SqlTableCreate += "CREATE TABLE " + txtbox_ltablename.Text + " ([No] int not null IDENTITY(1,1) PRIMARY KEY, [Computer ID] nvarchar(50), [Name Surname] nvarchar(50) )";
如果用户能够并且确实提供了 [No]
值,那么:它不是 SQL 服务器意义上的 IDENTITY
(尽管它仍然可以是主键, ETC);所以决定:
- 如果你想要它是一个
IDENTITY
,不要让用户提供它,不要将它包含在INSERT
中,并使用SCOPE_IDENTITY()
找出在 插入 之后你得到了什么
- 如果您不需要它成为一个
IDENTITY
,请不要将其声明为一个
混合搭配很少奏效。
无关,但是您真的,真的需要研究SQL注入和参数化;该代码非常危险。安全命令更像是:
cmd.CommandText @"
INSERT INTO YourTable ([Computer ID], [Name Surname])
VALUES (@id, @name);
SELECT SCOPE_IDENTITY();");
cmd.Parameters.AddWithValue("@id", cbbox_lcid.Text);
cmd.Parameters.AddWithValue("@name", txtbox_lnamesurname.Text);
var newId = (int)cmd.ExecuteScalar();