1

次の列を持つ 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 =ませんが、データベースに何を送信すればよいかわからないため、空のままにしました。クエリまたは他の場所で何か変更する必要がありますか?

4

1 に答える 1

2

Id が本当に自動インクリメント (ID) 列である場合、手動で挿入する必要はありません。IDの部分だけ省略

Dim insertSql As String = "INSERT INTO [WorkPerUser] (username,RMANumber,Charge)" & " values (@username,@rmanumber,@charge)"

ID を指定する必要はありません。最後に挿入された ID を取得したい場合があります。通常はスルーされますがSELECT SCOPE_IDENTITY()、これはインライン SQL では注意が必要です。

次のリンクを確認してください。

于 2013-01-25T14:02:47.613 に答える