c# Mysql创建新行,但如果存在,不要't
本文关键字:不要 存在 如果 Mysql 创建 新行 | 更新日期: 2023-09-27 18:03:39
我有一个mysql表,我的c#程序包括一些类似于登录/注册的东西。
我使用这个方法打开连接,关闭它和一些更多的东西:http://www.codeproject.com/Articles/43438/Connect-C-to-MySQL
public void Insert(string id,string ip)
{
string query = "INSERT INTO skinsdb (id, acces, ip) VALUES('" + id + "', 1 , '" + ip + "')";
//open connection
if (this.OpenConnection() == true)
{
//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();
}
else MessageBox.Show("code 18");
}
我只是使用这个新行,但我想如果"id"已经存在,只是增加1访问(int)他的行单元格。谢谢你。
如果id上只有一个唯一的索引,那么可以使用
"INSERT INTO skinsdb (id, acces, ip) VALUES('" + id + "', 1 , '" + ip + "')
ON DUPLICATE KEY UPDATE acces=acces+1";
您应该使用SQL参数。您可以通过以下查询实现您的目标:
string query =
"IF EXISTS (SELECT * FROM skinsdb WHERE id=@id)
UPDATE skinsdb SET acces=acces+1 WHERE id=@id
ELSE
INSERT INTO skinsdb (id, acces, ip) VALUES(@id,1,@ip)";
//open connection
if (this.OpenConnection() == true)
{
//create command and assign the query and connection from the constructor
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.Parameters.AddWithValue("@id",id);
cmd.Parameters.AddWithValue("@ip",ip);
//Execute command
cmd.ExecuteNonQuery();
//close connection
this.CloseConnection();
}