我试图在将其插入行后从表中存储标识值的值。
我想将值存储在currentID中,以便将值存储在另一个可以多次添加的表中。
任何帮助或建议都会很棒!
Dim currentID As Integer
Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.CommandType = System.Data.CommandType.Text
cmd.CommandText = "INSERT INTO table (Databasevalue) VALUES ('" + formvalue + "');"
cmd.Connection = sqlconninsertDB
sqlconninsertDB.Open()
cmd.ExecuteNonQuery()
**currentID = [get and store value]**
sqlconninsertDB.Close()
答案 0 :(得分:2)
您可以尝试将此SELECT添加到您的命令中:
cmd.CommandText = "INSERT INTO table (Databasevalue) VALUES ('" + formvalue + "'); SELECT SCOPE_IDENTITY()"
执行如下查询:
Dim currentID as Integer = cmd.ExecuteScalar()
而不是.ExecuteNonQuery()
附注:在构造内联命令时尽量不要使用字符串连接。而是研究参数化查询。
答案 1 :(得分:2)
使用Sql Server,您可以传递两个sql命令,用分号分隔它们 第二个命令是SELECT SCOPE_IDENTITY(),它返回在此范围中插入的最后一个ID 您可以执行这两个命令并使用ExecuteScalar
检索结果请注意使用参数化查询而不是字符串连接来避免Sql Injection攻击和解析问题。
Dim currentID As Integer
Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.CommandType = System.Data.CommandType.Text
cmd.CommandText = "INSERT INTO table (Databasevalue) VALUES (@formval); " +
"SELECT SCOPE_IDENTITY()"
cmd.Connection = sqlconninsertDB
cmd.Parameters.AddWithValue("@formval", formValue)
sqlconninsertDB.Open()
currentid = cmd.ExecuteScalar()
sqlconninsertDB.Close()