【发布时间】:2016-08-31 12:31:16
【问题描述】:
如果给定的文件名已经在我的数据库中,我想在我的表中更新,否则我想插入一个新行。我尝试了这段代码,但EXISTS 显示的错误请给我正确的方法,因为我在 SQL 中更新鲜
public void SaveData(string filename, string jsonobject)
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=;Integrated Security=True");
SqlCommand cmd;
SqlCommand cmda;
if EXISTS("SELECT * FROM T_Pages WHERE pagename = '" + filename + "") {
cmda = new SqlCommand("UPDATE T_Pages SET pagename='" + filename + "',pageinfo='" + jsonobject + "' WHERE pagename='" + filename + "'", con);
cmda.ExecuteNonQuery();
}
else {
cmd = new SqlCommand("insert into T_Pages (pagename,pageinfo) values('" + filename + "','" + jsonobject + "')", con);
cmd.ExecuteNonQuery();
}
con.Close();
}
【问题讨论】:
-
if EXISTS是什么?你在 C# 代码中。你不能在 C# 代码中编写 SQL 语法 -
你定义/实现了 EXIST 函数吗?你需要。
-
MERGE就是为了这个目的 -
MERGE 在这里是一个糟糕的选择,在一个批次中使用 IF EXISTS/INSERT/UPDATE。
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
标签: c# sql sql-server