如果给定的文件名已经在数据库中,我想在表中进行更新,否则我想插入新行。我尝试此代码,但EXISTS显示的错误请给我正确的方式,因为我在SQL中更新鲜
EXISTS
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()
using() {....}
试试下面的代码:
public void SaveData(string filename, string jsonobject) { // define connection string and query string connectionString = "Data Source=.;Initial Catalog=;Integrated Security=True"; string query = @"IF EXISTS(SELECT * FROM dbo.T_Pages WHERE pagename = @pagename) UPDATE dbo.T_Pages SET pageinfo = @PageInfo WHERE pagename = @pagename ELSE INSERT INTO dbo.T_Pages(PageName, PageInfo) VALUES(@PageName, @PageInfo);"; // create connection and command in "using" blocks using (SqlConnection conn = new SqlConnection(connectionString)) using (SqlCommand cmd = new SqlCommand(query, conn)) { // define the parameters - not sure just how large those // string lengths need to be - use whatever is defined in the // database table here! cmd.Parameters.Add("@PageName", SqlDbType.VarChar, 100).Value = filename; cmd.Parameters.Add("@PageInfo", SqlDbType.VarChar, 200).Value = jsonobject; // open connection, execute query, close connection conn.Open(); int rowsAffected = cmd.ExecuteNonQuery(); conn.Close(); } }