我有需要使用win form应用程序加载到db的文件 因为我是creationg bulkload字符串C#代码
private void bt_loadInToTable_Click(object sender, EventArgs e)
{
bulkinsert = " BULK INSERT " + tableName + " FROM " + filePath +
" WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'',BATCHSIZE = 1000, CHECK_CONSTRAINTS = ON , ERRORFILE = '" + tableName + "file_name.txt' )";
using (SqlConnection thisConnectionT = new SqlConnection("Server=" + serverName + ";User Id=" + uName + ";Password=" + pass + ";Database=" + dbName + ";"))
{
thisConnectionT.Open();
new SqlCommand(bulkinsert, thisConnectionT);
// bulkinsert.ExecuteNonQuery();
}
}
然而我想我称它有些错误,因为它没有加载,但没有发现错误
呼叫应该是exec sp_executesql bulkinsert
。
此C#代码应替换正在运行的 SQL 代码
DECLARE @bulkinsert NVARCHAR(2000)
set @bulkinsert = 'BULK INSERT ForTest FROM ''D:\\forBulk\\fortest.csv'' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'',BATCHSIZE = 1000 )'
EXEC sp_executesql @bulkinsert
如果我从sql端运行它的插入记录,但是从C#不是
抱歉,这可能是一个愚蠢的问题,但我是DB开发人员
答案 0 :(得分:1)
您可能需要按照this article中的说明考虑使用SqlBulkCopy
类。
暂时不说,我会避免通过字符串连接构建查询来减轻sql注入攻击。
答案 1 :(得分:0)
以下内容将查询EXEC('SELECT 1')发送到您的连接。
class MyClass {
@Autowired
public MyClass(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}