c# - 如何在 C# 中执行包含 "-"、 "\"或 ";"字符串的 TSQL 输入命令

标签 c# sql-server tsql

我有一个 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()); }

最佳答案

试试SqlParameters .它将使您免于 Sql 注入(inject)以及您当前的问题。

myCommand.Parameters.AddWithValue("@param1", myValueWithCharacters);

关于c# - 如何在 C# 中执行包含 "-"、 "\"或 ";"字符串的 TSQL 输入命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032882/

相关文章:

c# - 如何在 C# 的 Process.Start 中处理带空格的值

c# - 在 Visual Studio 2022 中恢复 'There were build errors' 对话框

c# - 将文件上传到 Azure Blob 存储

sql-server - 在 SQLCMD 中访问 SQL 语句的返回值

sql-server - SQL Server 2008 将 VARCHAR(50) 转换为唯一标识符

sql - 需要 T-SQL 查询找到所有可能的方式

c# - 将 Html 文档(包含图像)作为电子邮件附件发送 C#

sql-server - 如何在 SQL Server 中将输出参数与其他列名称一起使用

sql-server - 按 ID 删除多行并检查这些 ID 是否不在其他表中

sql - SQL Server 中的 T-SQL STOP 或 ABORT 命令