试图将值插入数据库

时间:2014-03-27 03:45:03

标签: mysql asp.net database

我只是想基本插入一些文本到我的数据库,但为什么它显示这个错误?但是在我的朋友电脑里它工作...... (我已经为数据库做了表格)

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

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();
}

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果您在数据库中有一个标识列,如id等,那么您应该在insert语句中指定列名称,如。

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

答案 2 :(得分:0)

  

当您尝试将新记录插入包含标识列的表而未指定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);
.
.
.

答案 3 :(得分:0)

试试这个例子

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”);