当IDENTITY_INSERT设置为OFF时,无法在表'Student'中为identity列插入显式值

Anu*_*ain 0 c# sql sql-server asp.net

我将值插入数据库时​​出现此错误.我已经在SQL Sever Management Studio中将身份规范属性设置为ON,但我仍然遇到此错误.我也试过这种方式SET IDENTITY_INSERT Student ON,在我的SQL命令中添加这一行,但它没有运行.

Default.aspx.cs:

protected void btnsubmit_Click1(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=INAFFFP1IT004W\MYSQL;Initial Catalog=test;User ID=sa;Password=test@1234;");
    con.Open();

    string SId = tbid.Text;
    string FirstName = tbfirstname.Text;
    string LastName = tblastname.Text;
    string StartDate = tbstart.Text;
    string EndDate = tbend.Text;

    using (SqlCommand cmd = con.CreateCommand())
    {
     cmd.CommandText = "insert into Student(SId,FirstName,LastName,StartDate,EndDate) values('" + SId + "','" + FirstName + "','" + LastName + "','" + StartDate + "','" + EndDate + "')";
        cmd.Parameters.AddWithValue("@SId", tbid.Text);
        cmd.Parameters.AddWithValue("@FirstName", tbfirstname.Text);
        cmd.Parameters.AddWithValue("@LastName", tblastname.Text);
        cmd.Parameters.AddWithValue("@StartDate", tbstart.Text);
        cmd.Parameters.AddWithValue("@EndDate", tbend.Text);
        cmd.ExecuteNonQuery();
    }
    con.Close();
    tbid.Text = "";
    tbfirstname.Text = "";
    tblastname.Text = "";
    tbstart.Text = "";
    tbend.Text = "";
    tbid.Focus();
}

 **Default.aspx**:

 <head runat="server">

<script type="text/javascript">
  window.onload = function () {
    new JsDatePick({
        useMode: 2,
        target: "tbstart",
        dateFormat: "%M/%d/%Y"
    });
    new JsDatePick({
        useMode: 2,
        target: "tbend",
        dateFormat: "%M/%d/%Y"
    });
 };
</script>
<title></title>

<style type="text/css">
    .style1
    {
        width: 64px;
    }
</style>

</head>
<body>
<form id="form1" runat="server">
<div>

</div>
<table cellpadding="2" cellspacing="5">
    <tr>
        <td>
            <asp:Label ID="lblId" runat="server" Text="SId"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="tbid" runat="server"></asp:TextBox>
        </td>
        <td class="style1">
            &nbsp;</td>
    </tr>
    <tr>
        <td>
            <asp:Label ID="lblname" runat="server" Text="FirstName"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="tbfirstname" runat="server"></asp:TextBox>
        </td>
        <td class="style1">
            &nbsp;</td>
    </tr>
    <tr>
        <td>
            <asp:Label ID="lbllastname" runat="server" Text="LastName"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="tblastname" runat="server"></asp:TextBox>
        </td>
        <td class="style1">
            &nbsp;</td>
    </tr>
    <tr>
        <td>
            <asp:Label ID="lblstart" runat="server" Text="StartDate"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="tbstart" runat="server"></asp:TextBox>
        </td>
        <td class="style1">
            &nbsp;</td>
    </tr>
    <tr>
        <td>
            <asp:Label ID="lblend" runat="server" Text="EndDate"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="tbend" runat="server"></asp:TextBox>
        </td>
        <td class="style1">
            &nbsp;</td>
    </tr>
    <tr>
        <td>
            <asp:Button ID="btnupdate" runat="server" onclick="btnupdate_Click" 
                Text="Update" Width="63px" />
        </td>
        <td>
            <asp:Button ID="btnsubmit" runat="server" Text="Submit" 
                onclick="btnsubmit_Click1" Width="102px" />
        </td>
        <td class="style1">
     <asp:Button ID="btnsearch" runat="server" onclick="Button1_Click" Text="Search" />
        </td>
    </tr>
</table>
<br />

</form>
</body>
Run Code Online (Sandbox Code Playgroud)

Maa*_*ten 5

SQL命令

SET IDENTITY_INSERT <table> ON
Run Code Online (Sandbox Code Playgroud)

有一个会话范围.您需要将此包含在您在C#代码中发送到数据库的查询中.

请注意,您只能拥有一个带有identity_insert的表.MSDN:

在任何时候,会话中只有一个表可以将IDENTITY_INSERT属性设置为ON.如果某个表已将此属性设置为ON,并且为另一个表发出了SET IDENTITY_INSERT ON语句,则Microsoft®SQLServer™将返回一条错误消息,指出SET IDENTITY_INSERT已经为ON并报告其设置为ON的表.