Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在自动索引主键中插入查询_Asp.net_Sql_Vb.net - Fatal编程技术网

Asp.net 在自动索引主键中插入查询

Asp.net 在自动索引主键中插入查询,asp.net,sql,vb.net,Asp.net,Sql,Vb.net,我有一个名为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

我有一个名为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=
留空,因为我不知道要向数据库发送什么。是否需要在查询或其他地方更改任何内容?

如果Id确实是一个自动增量(标识)列,则无需手动插入。只需省略Id部分

Dim insertSql As String = "INSERT INTO [WorkPerUser] (username,RMANumber,Charge)" & " values (@username,@rmanumber,@charge)"
您不必指定id。您可能希望获取插入的最后一个id。通常是通过
selectscope\u IDENTITY()
实现的,这对于内联SQL来说很棘手

检查以下链接:


谢谢。成功了。还有一个问题。如您所见,我注释掉了temp_id=session(“se_userid”)的部分,并使用id.value=temp_id发送到数据库。问题是所有的数据库列“id”都是“000-000…”,而不是来自aspnet_用户的实际用户id。有什么想法吗?既然你不再插入Id列,你想做什么?您正在尝试获取当前登录的用户吗?如果为true,则应该是
temp\u id=Membership.GetUser().ProviderUserKey.ToString()
。如果是其他内容,请告诉我我正在尝试将asp.net生成的实际用户id插入id列。当我检查标签上的输出时,它是正常的,但是当我在数据库中发送它时,34个字符的guid只有零。(我已经检索到用户ID并将其存储在会话中)