0

データベースに値を挿入すると、このエラーが発生しました。SQL Sever Management Studioで既にID仕様プロパティのオンに設定していますが、それでもこのエラーが発生します。私もこの方法を試し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>
4

3 に答える 3

5

SQLコマンド

SET IDENTITY_INSERT <table> ON

セッションスコープがあります。これを、C#コードでデータベースに送信したクエリに含める必要があります。

Identity_insertがオンになっているテーブルは1つだけであることに注意してください。MSDN:

いつでも、セッション内の1つのテーブルのみがIDENTITY_INSERTプロパティをONに設定できます。テーブルでこのプロパティがすでにONに設定されていて、別のテーブルに対してSET IDENTITY_INSERT ONステートメントが発行された場合、Microsoft®SQLServer™はSET IDENTITY_INSERTがすでにONになっていることを示すエラーメッセージを返し、ONに設定されているテーブルを報告します。

于 2013-03-19T09:22:19.523 に答える
2

このコマンド テキストの実行を試みることができます。

 cmd.CommandText = "SET IDENTITY_INSERT Student ON;" + 
                   "insert into Student(SId,FirstName,LastName,StartDate,EndDate) " + 
                    "values(@id, @firstname, @lastname, @startdate, @enddate);" + 
                    "SET IDENTITY_INSERT Student OFF;" ;
 cmd.Parameters.AddWithValue("@id", SId);
 cmd.Parameters.AddWithValue("@firstname", FirstName);
 cmd.Parameters.AddWithValue("@lastname", LastName);
 cmd.Parameters.AddWithValue("@startdate", StartDate);
 cmd.Parameters.AddWithValue("@enddate", endDate);

また、パラメーターは、文字列を連結するのではなく、プレフィックス「@」を使用してコマンド テキストに挿入する必要があることに注意してください。

于 2013-03-19T09:25:20.890 に答える
0
于 2013-03-19T09:54:16.250 に答える