我有一个方法Insert()
。除了自动增量之外,一切都按预期工作。这是代码:
public void Insert(string m1,int y1,int new_count)
{
string query = "INSERT INTO page_counter (id,month,year,page_count) VALUES('','"+m1+"',"+y1+","+new_count+")";
//create command and assign the query and connection from the constructor
MySqlCommand cmd = new MySqlCommand(query, connection);
//Execute command
cmd.ExecuteNonQuery();
//close connection
this.CloseConnection();
}
我的Id列是自动增量。所以我的问题是如何在数据库中插入值,继续表中id的自动增量?
答案 0 :(得分:3)
只需不指定id
的值:
string query = "INSERT INTO page_counter (month,year,page_count) VALUES('"+m1+"',"+y1+","+new_count+")";
并研究更好的方法,参数化查询,而不是连接查询字符串。
答案 1 :(得分:3)
您所要做的就是从插入中排除自动递增的IDENTITY
列。
将您的query
更改为:
//NOTE: We leave the "id" column out of the insert, SQL Server will handle this automatically
string query = "INSERT INTO page_counter (month, year, page_count) VALUES (@Month, @Year, @PageCount)";
SQL将处理ID字段。
您可能会注意到我在查询中使用了标量变量。您可以(并且应该)在命令中分配这些内容,以便排除SQL注入的可能性:
由于来自MySql.Data.MySqlClient PRE 4.0的事实编辑
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.Parameters.Add(new MySqlParameter("@Month", m1));
cmd.Parameters.Add(new MySqlParameter("@Year", y1));
cmd.Parameters.Add(new MySqlParameter("@PageCount", new_count));
//Execute the INSERT
cmd.ExecuteNonQuery();
关于SQL注入的一些背景,我建议阅读:
答案 2 :(得分:2)
没有为AUTO_INCREMENT列指定值,因此MySQL会自动分配序列号。
string query = "INSERT INTO page_counter (month,year,page_count)
VALUES('"+m1+"',"+y1+","+new_count+")";
您始终可以使用参数化查询来避免SQL Injection
string query = "INSERT INTO page_counter (month,year,page_count)
VALUES(@month,@year,@page_count)";
cmd.Parameters.AddWithValue("@month",Value1);
cmd.Parameters.AddWithValue("@year", Value2);
cmd.Parameters.AddWithValue("@page_count", Value3);
答案 3 :(得分:1)
string query = "INSERT INTO page_counter (month,year,page_count) VALUES('"+m1+"',"+y1+","+new_count+")";
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
答案 4 :(得分:1)
您可以更改数据库中的ID标识
"INSERT INTO page_counter (month,year,page_count) VALUES('"+m1+"',"+y1+","+new_count+")"
答案 5 :(得分:1)
请勿在此处指定ID:
如果您使用的是SQL Server,请在数据库中创建ID字段,如下所示:
ID int IDENTITY(1,1) PRIMARY KEY
如果MySQL那么:
ID int NOT NULL AUTO_INCREMENT