C# 实现往数据库中更新数据(有则update,无则insert)

CarBot 2019-06-29 02:55:31
代码如下:


using (SqlConnection conn = new SqlConnection("server=.;database=" + dbName + ";uid=sa;pwd=123456"))
{
try
{
string str_InsertUpdate = string.Format(@"INSERT INTO tb_A (county, date, state) VALUES ('{0}','{1}','{2}') ON DUPLICATE KEY UPDATE state = '{2}'",countyName, dateTime, stateNumber);

SqlCommand comm = new SqlCommand(str_InsertUpdate, conn);
if (conn.State == ConnectionState.Closed)
conn.Open();

int i =
comm.ExecuteNonQuery();
if (i < 1) return false;
return true;
}

catch (Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}

每次运行到comm.ExecuteNonQuery();都会报错,显示“关键字ON附近有语法错误”,不知道到底是哪错了,麻烦高人给看看原因。
...全文
771 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2019-07-08
  • 打赏
  • 举报
回复
数据库的脚本 贴出来看下。

INSERT INTO tb_A (county, date, state) VALUES ('{0}','{1}','{2}') ON DUPLICATE KEY UPDATE state = '{2}'",countyName, dateTime, stateNumber


这个地方写错了。

SQLSERVER中没有类似INSERT ON DUPLICATE KEY UPDATE的语法

了解了下 MYSQL 里有。
Water Lee 2019-07-06
  • 打赏
  • 举报
回复
这下面这个结构的语句来做吧,我一直在用,挺好用的。判断和执行一次就搞定了,中间也不用把数据返回来判断,理论上会快一些。
if exists(Select top(1) 1 from 【pointTable】
where 【condition】)
begin
UPDATE 【pointTable】
end
else
begin
INSERT 【pointTable】
end
射手座cl 2019-06-29
  • 打赏
  • 举报
回复
建议在sql那里打个断点,然后把sql拿到数据库中执行,然后解决对应问题
vin_Lee 2019-06-29
  • 打赏
  • 举报
回复
if exist(select语句) update else insert 了解一下
  • 打赏
  • 举报
回复
还是分开两步来吧,先查是否存在,再考虑是插入还是修改
  • 打赏
  • 举报
回复
sql server没有duplicate这个关键字吧 你试试调试把语句在数据库跑,应该也是会报错

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧