首页 > 解决方案 > 只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表“用户”中的标识列指定显式值

问题描述

我一直在尝试使我的 SQL Server 数据库与我的 aspx 项目一起工作。我为从我的网络表单文本字段中读取数据的用户创建了一个表格。但是,无论出于何种原因,它都会尝试将我的Users表格id列分配给我的 Web 项目中的第一个文本框。我似乎想不出办法来解决它。你可以帮帮我吗?

CREATE TABLE [dbo].[Users]
(
    [Id] INT NOT NULL PRIMARY KEY, 
    [Username] NVARCHAR(MAX) NULL, 
    [Password] NVARCHAR(MAX) NULL, 
    [Email] NVARCHAR(MAX) NULL, 
    [Name] NVARCHAR(MAX) NULL
)

在这里我从 webform 分配值:

SqlCommand cmd = new SqlCommand("insert into Users values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "','u')", con);

网络表单标记:

        <div class="center-page">
            <label class="col-xs-11">Username</label>
            <div class="col-xs-11">
                <asp:TextBox ID="tbUname" runat="server" CssClass="form-control" placeholder="Username"></asp:TextBox>

            </div>
            <label class="col-xs-11">Password</label>
            <div class="col-xs-11">
                <asp:TextBox ID="tbPass" runat="server" CssClass="form-control" placeholder="Password"></asp:TextBox>
            </div>
            <label class="col-xs-11">Confirm Password</label>
            <div class="col-xs-11">
                <asp:TextBox ID="tbCPass" runat="server" CssClass="form-control" placeholder="Confirm Password"></asp:TextBox>
            </div>
            <label class="col-xs-11">Name</label>
            <div class="col-xs-11">
                <asp:TextBox ID="tbName" runat="server" CssClass="form-control" placeholder="Name"></asp:TextBox>
            </div>

            <label class="col-xs-11">E-Mail</label>
            <div class="col-xs-11">
                <asp:TextBox ID="tbEmail" runat="server" CssClass="form-control" placeholder="Email"></asp:TextBox>
            </div>
            <br />
            <br />
            <br />
            <div class="col-xs-11 space-vert">
                <asp:Button ID="btSignup" runat="server" class="btn btn-success" Text="Sign Up" OnClick="btSignup_Click" />
            </div>
        </div>

标签: sqlsql-server

解决方案


您只需要在命令中明确指定要插入INSERT的列- 如下所示:

INSERT INTO dbo.Users(Username, Password, Email, Name)
VALUES (@val1, @val2, @val3, @val4);

推荐阅读