【问题标题】:Trying to insert value to database试图将值插入数据库
【发布时间】:2014-03-27 03:45:02
【问题描述】:

我只想在我的数据库中基本插入一些文本,但为什么会显示此错误?但在我朋友的电脑上它可以工作...... (我已经为数据库做了表)

只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表 'CUSTOMER' 中的标识列指定显式值。

public partial class SignUp : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection("Data Source=LENOVO\\EBG; Initial Catalog=dbMACARON; integrated security= True");
    SqlCommand com = new SqlCommand("Select * from CUSTOMER");
    public void Bind()
    {
        SqlDataAdapter da = new SqlDataAdapter(com);
        DataSet ds = new DataSet();
        con.Open();
        com.Connection = con;
        com.ExecuteNonQuery();
        da.Fill(ds, "CUSTOMER");
        GridView1.DataSource = ds;
        GridView1.DataBind();
        con.Close();
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
protected void Button1_Click(object sender, EventArgs e) //SUBMIT SIGNUP
{
    con.Open();
    SqlCommand comi = new SqlCommand("Insert CUSTOMER values(@name,@nric,@address,@gender,@dob,@phone,@email,@username,@password)");
    comi.Parameters.Add("name", SqlDbType.VarChar, 50);
    comi.Parameters["name"].Value = TextBox1.Text;
    comi.Parameters.Add("nric", SqlDbType.Char, 12);
    comi.Parameters["nric"].Value = TextBox2.Text;
    comi.Parameters.Add("address", SqlDbType.VarChar, 50);
    comi.Parameters["address"].Value = TextBox3.Text;
    comi.Parameters.Add("gender", SqlDbType.VarChar, 10);
    comi.Parameters["gender"].Value = TextBox4.Text;
    comi.Parameters.Add("dob", SqlDbType.VarChar, 50);
    comi.Parameters["dob"].Value = TextBox5.Text;
    comi.Parameters.Add("phone", SqlDbType.VarChar, 20);
    comi.Parameters["phone"].Value = TextBox6.Text;
    comi.Parameters.Add("email", SqlDbType.VarChar, 20);
    comi.Parameters["email"].Value = TextBox7.Text;
    comi.Parameters.Add("username", SqlDbType.VarChar, 20);
    comi.Parameters["username"].Value = TextBox8.Text;
    comi.Parameters.Add("password", SqlDbType.VarChar, 20);
    comi.Parameters["password"].Value =TextBox9.Text;
    comi.Connection = con;
    comi.ExecuteNonQuery();
    con.Close();
    Bind();
}

【问题讨论】:

  • 感谢大家的帮助,我的问题已经解决了。感谢您。 @

标签: mysql asp.net database


【解决方案1】:

当您尝试将新记录插入包含标识列的表中而未在 INSERT 语句中指定列并且您正在为标识列分配值而不是让 SQL Server 分配值时,会发生此错误。

您在插入查询中缺少into 应该是

为表设置IDENTITY_INSERT to ON 允许将显式值插入到表的标识列中

Insert into CUSTOMER (name,nric,address,gender,dob,phone,email,username,password) values (@name,@nric,@address,@gender,@dob,@phone,@email,@username,@password)");

comi.Parameters.AddWithValue("@name",TextBox1.Text);
comi.Parameters.AddWithValue("@nric",TextBox2.Text);
comi.Parameters.AddWithValue("@address",TextBob3.Text);
comi.Parameters.AddWithValue("@gender", TextBox4.Text);
.
.
.

【讨论】:

    【解决方案2】:

    我认为问题出在数据库表创建上。IDENTITY_INSERT 为 ON。这意味着您的字段是以整数类型创建的,并且它会在每个条目上自动 +1,用户在执行插入语句时不需要插入到该字段。如果您这样做,将出现“身份列的显式值”,请检查您的数据库创建是否与您的朋友相同。希望这对你有帮助。祝你好运

    【讨论】:

    • 是的,我试图将我的 custid 设置为身份,就像我放在我的数据库 Cust_ID INT IDENTITY (1,1) 上一样,但是在我的 asp.net 上,我没有在上面设置任何值.. 但是只是为了获取......但我仍然得到这个身份错误..
    【解决方案3】:

    如果你在数据库中有一个标识列,比如 id 等,那么你应该在插入语句中指定列名。

    Insert CUSTOMER(name,nric,address,gender,dob,phone,email,username,password)
    values(@name,@nric,@address,@gender,@dob,@phone,@email,@username,@password)
    

    【讨论】:

      【解决方案4】:

      试试这个例子

      SET IDENTITY_INSERT CUSTOMER ON;" + 
                     "insert into CUSTOMER(a,b,c) " + 
                      "values(@a,@b,@c;" + 
                      "SET IDENTITY_INSERT CUSTOMER OFF;" ;
      

      comi.Parameters.Add("@a", "a"); comi.Parameters.Add("@b", "b"); comi.Parameters.Add("@c", "c");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-10
        • 2018-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多