只有在使用列列表且IDENTITY_INSERT为ON

时间:2018-05-04 19:42:08

标签: sql sql-server

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

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>

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

你的ID fiels是自动增量的身份字段吗? 我认为这不是因为我没有看到你使用

IDENTITY(1,1)
在您的create table中

,然后您需要在insert语句中使用它

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

答案 2 :(得分:0)

要解决此问题: 替换此查询...

SqlCommand cmd =新的SqlCommand(“插入用户值('” + tbUname.Text +“','” + tbPass.Text +“','” + tbEmail.Text +“','” + tbName。文字+“','u')”,con);

将这个放在这里

SqlCommand cmd =新的SqlCommand(“ INSERT INTO [dbo]。[Users]([Username],[Password],[Email],[Name])VALUES('” + tbUname.Text +“','” + tbPass.Text +“','” + tbEmail.Text +“','” + tbName.Text +“')”,con);