当我在代码中传递空值时,我很困惑为什么SQL不会自动递增我的Id列:
case GameStatus.WIN:
gamefeed.Items.Add(String.Format("Congragulations, you rolled {0}. YOU WIN.", Sum));
connect.Open();
SqlCommand cmdwin = connect.CreateCommand();
cmdwin.CommandType = CommandType.Text;
cmdwin.CommandText = "insert into Round values('','" + textBox2.Text + "', '" + numRolls.ToString() + "', '"+ Point.ToString()+"', 'Win')";
cmdwin.ExecuteNonQuery();
connect.Close();
break;
对正确方向的任何帮助或推动表示赞赏!
答案 0 :(得分:2)
如果您已将Id
列定义为Identity
列,则无需为INSERT语句中的Id
列传递任何内容(甚至不是占位符)。< / p>
cmdwin.CommandText =
"insert into Round values('" + textBox2.Text + "', '" + numRolls.ToString() + "', '"+ Point.ToString()+"', 'Win')";
另外,请注意连接文本值(SQL注入)是一个非常糟糕的主意,而是使用参数。
答案 1 :(得分:1)
正如已经说过的那样,你不需要将paas值赋予身份字段(自动增量)
你的SQL应该是
Column name or number does not match table definition
如果您收到错误
—Column1 is Identity
"insert into Round(Column2, Column3, Column4, Column5) values('" + textBox2.Text + "', '" + numRolls.ToString() + "', '"+ Point.ToString()+"', 'Win')";
/*Replace Column,2,3,4,5 with your respective columns in table Round*/
然后你要么在insert中传递更多值,要么在表Round中传递你的列。 要么 您应该尝试在插入查询中提供列的名称
class Zones{
private int id;
private String name;
public Zones(int id, String name){
this.id=id;
this.name=name;
}
public int getId(){
return id;
}
public String getName(){
return name;
}
@Override
public String toString(){
return id+" - "+name;
}