我只是想基本插入一些文本到我的数据库,但为什么它显示这个错误?但是在我的朋友电脑里它工作...... (我已经为数据库做了表格)
表格中的标识列的显式值' 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();
}
答案 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”);