Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将表格保存到文本文件的SQL命令_C#_Sql_Sql Server - Fatal编程技术网

C# 将表格保存到文本文件的SQL命令

C# 将表格保存到文本文件的SQL命令,c#,sql,sql-server,C#,Sql,Sql Server,我试图使用C#和SQL命令将一些值从表保存到文本文件 sql.connection.Open(); sql.ex = new SqlCommand("EXEC xp_cmdshell 'bcp "SELECT * FROM SRO_VT_SHARD.._RefPackageItem" queryout "textBox1.Text" -T -c '",sql.connection); sql.ex.ExecuteNonQuery(); sql.connection.Close(); 我在C#a

我试图使用C#和SQL命令将一些值从表保存到文本文件

sql.connection.Open();
sql.ex = new SqlCommand("EXEC xp_cmdshell 'bcp "SELECT * FROM SRO_VT_SHARD.._RefPackageItem" queryout "textBox1.Text" -T -c '",sql.connection);
sql.ex.ExecuteNonQuery();
sql.connection.Close();
我在C#api中这样做了,但我不知道如何修复
SqlCommand
text中的错误?谁能提供所需的修复?

您将bcp命令所需的双引号与textbox变量中分隔命令所需的双引号自由地混合在一起。正如您所看到的,红色的波形是VS的语法检查器用来告诉您它对此不满意的方式

在bcp命令所需的引号前加一个反斜杠,并添加一个+运算符,将文本框的字符串值连接到命令的其余部分

sql.ex = new SqlCommand("EXEC xp_cmdshell 'bcp \"SELECT * FROM SRO_VT_SHARD.._RefPackageItem\" queryout " + 
         textBox1.Text + " -T -c '",sql.connection);
我还要说,构建Sql命令的字符串连接是一种非常危险的做法。

当使用普通命令查询和/或更新数据时,我建议绝对避免字符串连接,因为您可能会暴露于Sql注入。在本例中,我不确定是否可以使用TextBox1的内容装载Sql注入命令

那个错误到底是什么???当你试图执行它时,它在第二行下面放了一条红线,它会抛出什么错误?如果您将鼠标悬停在带下划线的文本上,是否会给出解释?还有什么更具体的吗?如果您使用的是string.Format,为什么还要使用
+
char b = '"';
string a = string.Format("EXEC xp_cmdshell 'bcp {0}SELECT * FROM SRO_VT_SHARD.._RefPackageItem{0} queryout " + textBox1.Text + " -T -c '",b);