[英]lose \ when using ExecuteNonQuery
我正在嘗試將單個值插入SQL數據庫。 只要我不插入“ \\”,它就可以正常工作。 如果這樣做,那么數據庫中將丟失一個“ \\”。
例如,在調試器中,我看到以下命令文本:
Insert into tblProjekte (Projektbezeichnung) values ('\\bla\\bla\\bla')
但是在SQL Server Profiler中,我總是會找到以下插入語句:
Insert into tblProjekte (Projektbezeichnung) values ('\bla\bla\bla')
我的源代碼:
public void InsertProjekt(string Projektbezeichnung)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Server=localhost; Database=myProjekt; UID=user; PWD=pwd";
con.Open();
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = String.Format("Insert into tblProjekte (Projektbezeichnung) values ('{0}')",@Projektbezeichnung);
int rows = com.ExecuteNonQuery();
}
將源代碼更改為:
SqlCommand com = new SqlCommand("INSERT INTO tblProjekte (Projektbezeichnung) VALUES (@Projektbezeichnung)");
com.Parameters.AddWithValue("@Projektbezeichnung", Projekt.Projektbezeichnung);
我在調試過程中獲得了以下信息:
值是“ \\\\ Tesafilm”,SQLValue是“ \\ Tesafilm”
請改用參數化查詢 :
public void InsertProjekt(string Projektbezeichnung)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Server=localhost; Database=myProjekt; UID=user; PWD=pwd";
con.Open();
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "Insert into tblProjekte (Projektbezeichnung) values (@value)"
com.Parameters.AddWithValue("@value", Projektbezeichnung);
int rows = com.ExecuteNonQuery();
}
正如一些注釋所指出的那樣, \\
字符是SQL中的“轉義字符”。 當您在不使用正確的轉義字符串的情況下插入它時,SQL會將其刪除,因為它將它們解釋為只是轉義字符。
您正在使用string.Format()
來模擬參數化查詢,但這並不會真正消除它。 但是,如果使用SqlCommand.Parameters.AddWithValue()
,它將解決您的問題:
SqlCommand com = new SqlCommand("INSERT INTO tblProjekte (Projektbezeichnung) VALUES (@Projektbezeichnung)");
com.Parameters.AddWithValue("@Projektbezeichnung", Projektbezeichnung);
com.Connection = con;
int rows = com.ExecuteNonQuery();
有關SqlCommand.Parameters
集合的更多信息,請在MSDN上此處進行檢查。 它提供了一些“添加”方法,它們可能更適合於不同的場景-盡管常規.AddWithValue()
在這種情況下應該可以正常工作。
更新 :將我原來的.Add()
更改為.AddWithValue()
因為MSDN聲明SqlParameterCollection.Add()
已被棄用,而推薦使用.AddWithValue()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.