use*_*272 1 c# t-sql sql-server
我有一个SqlCommand尝试在SQL Server数据库表中插入一行.感兴趣的列是nvarchar(100),需要输入的数据将包括诸如" - ",";"之类的字符.和"\".当我插入没有这些字符的字符串时,一切正常.当我尝试插入包含这些字符的字符串时,代码会失败,因为代码会逐字理解这些字符,从而报告语法错误.我已经使用动态sql单独在TSQL中解决了这个问题,但我找不到任何好的引用来在C#中执行此操作.我想我可以创建一个存储过程并传递值,但有没有一种方法可以使用C#单独有效地执行此操作?如果是这样,怎么样?或者将值传递给存储过程是一种更好的方法?
这是代码的简化版本:
String SQLServerInstanceNames = "ussqlclus-db43\ussqlclusdb43; ussqlclus-db44\ussqltrysdb44; ussqltrys-db45\ussqltrysdb45;"
//Create Connection (Get Connection string from Server Explorer)
SqlConnection myConnection = new SqlConnection("Data Source=SERVER1;Initial Catalog=Database1;Integrated Security=True");
//Open connection
try { myConnection.Open(); }
catch (Exception e) { Console.WriteLine(e.ToString()); }
SqlCommand myCommand = new SqlCommand("INSERT INTO [dbo].[Table1]" +
"([SQLServerInstanceNames])" +
"VALUES (SQLServerInstanceNames);", myConnection);
//Execute command
myCommand.ExecuteNonQuery();
//Close connection
try { myConnection.Close(); }
catch (Exception e) { Console.WriteLine(e.ToString()); }
Run Code Online (Sandbox Code Playgroud)
尝试使用SqlParameters.它将为您节省Sql Injection以及当前的问题.
myCommand.Parameters.AddWithValue("@param1", myValueWithCharacters);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |