2014-03-27 59 views
1

我只想基本插入一些文本到我的數據庫,但它爲什麼顯示這個錯誤?但在我的朋友電腦中它工作... (我已經爲數據庫做表)試圖向數據庫插入值

表'CUSTOMER'中的標識列的顯式值只能在列列表被使用且IDENTITY_INSERT爲上。

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

謝謝大家幫助我,我已經解決了我的問題。謝謝。 @ – user3436232

回答

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); 
. 
. 
. 
0

我認爲問題是在數據庫表創建.. IDENTITY_INSERT是ON。意思是你的字段是用整數類型創建的,並且在執行插入語句時用戶不需要插入到這個字段的每個條目都會自動+1。如果你這樣做,將會出現「標識列的顯式值」,請檢查你的數據庫是否與你的朋友創建相​​同。希望這對你有所幫助。祝你好運

+0

是的,我試圖讓我的custid設置爲身份,就像我把我的數據庫Cust_ID INT IDENTITY(1,1),但在我的asp.net我沒有把它放在任何值..但只是爲了取...但我仍然得到這個身份錯誤.. – user3436232

0

在這裏,如果你有像ID等數據庫中的標識列,那麼你應該在插入語句中指定列名稱。

Insert CUSTOMER(name,nric,address,gender,dob,phone,email,username,password) 
values(@name,@nric,@address,@gender,@dob,@phone,@email,@username,@password) 
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」);