我有一个名为WorkPerUser的表,其中包含以下列:
id int
username nchar(50)
RMANumber int
Charge real
“id”是自动递增为1的主键。
我的代码背后是:
Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSubmit.Click
'Dim temp_id As String
'temp_id = Session("se_userid")
'SQL connection String and Query
Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
Dim insertSql As String = "INSERT INTO [WorkPerUser] (id,username,RMANumber,Charge)" & " values (@id,@username,@rmanumber,@charge)"
'Create SQL connection
Dim con As New SqlConnection(connectionString)
'Create SQl command and parameters
Dim cmd As New SqlCommand()
cmd.Connection = con
cmd.CommandType = CommandType.Text
cmd.CommandText = insertSql
Dim id As New SqlParameter("@id", SqlDbType.Text)
id.Value =
cmd.Parameters.Add(id)
Dim username As New SqlParameter("@username", SqlDbType.NChar)
username.Value = Session("userName")
cmd.Parameters.Add(username)
Dim rmanumber As New SqlParameter("@rmanumber", SqlDbType.Int)
rmanumber.Value = txtRMA.Text.ToString()
cmd.Parameters.Add(rmanumber)
Dim charge As New SqlParameter("@charge", SqlDbType.Real)
charge.Value = txtCharge.Text.ToString()
cmd.Parameters.Add(charge)
Try
con.Open()
cmd.ExecuteNonQuery()
lblMsg.Text = "Job Inserted"
Catch ex As SqlException
Dim errorMessage As String = "Error registering job"
errorMessage += ex.Message
Throw New Exception(errorMessage)
Finally
con.Close()
End Try
End Sub
您可能已经注意到,我将id.Value =
留空了,因为我不知道要将什么发送到数据库。是否需要在查询或其他地方更改任何内容?
答案 0 :(得分:2)
如果Id确实是自动增量(标识)列,则无需手动插入。只需省略Id部分
Dim insertSql As String = "INSERT INTO [WorkPerUser] (username,RMANumber,Charge)" & " values (@username,@rmanumber,@charge)"
您不必指定ID。您可能想要获取插入的最后一个ID。它通常通过SELECT SCOPE_IDENTITY()
,这对于内联SQL来说很棘手。
检查以下链接: