我尝试将数据从DB1复制到DB2.但是我得到错误:必须声明表变量"@TableName".
这段代码有什么问题?
功能:
public void TransferData()
{
SqlConnection source = new SqlConnection(strConnectDB1);
SqlConnection destination = new SqlConnection(strConnectDB2);
source.Open();
destination.Open();
SqlCommand cmd= new SqlCommand("SELECT * FROM @TableName", source);
cmd.Parameters.AddWithValue("@TableName", listbox1.SelectedItem.ToString());
SqlDataReader reader = cmd.ExecuteReader();
SqlBulkCopy bulkData = new SqlBulkCopy(destination);
bulkData.DestinationTableName = listbox1.SelectedItem.ToString();
bulkData.WriteToServer(reader);
.
.
}
Run Code Online (Sandbox Code Playgroud)
按钮:
private void button5_Click(object sender, EventArgs e)
{
CreateTableName();
TransferData();
}
Run Code Online (Sandbox Code Playgroud)
SQL FROM子句中的表名不是表达式,因此不能在参数中发送.
您需要手动构造SQL字符串,例如
SqlCommand cmd = new SqlCommand(string.Format("SELECT * FROM {0}", listbox1.SelectedItem), source);
Run Code Online (Sandbox Code Playgroud)
我强烈建议您分隔表名以防止SQL注入攻击.
SqlCommand cmd = new SqlCommand(string.Format("SELECT * FROM {0}", "[" + listbox1.SelectedItem.ToString().Replace("]", "]]") + "]"), source);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2470 次 |
| 最近记录: |