C# 从相同的名称方案和表插入表,但路径不同
我想合并两个名称相同的scheme和table,但路径不同。我原以为它能用,但没用 它返回错误 'System.Data.SqlClient.SqlException:'C:'附近的语法不正确。 “C:”附近的语法不正确。标签“C”已声明。 标签名称在查询批处理或存储过程中必须是唯一的。“” 当我替换C# 从相同的名称方案和表插入表,但路径不同,c#,sql-server,C#,Sql Server,我想合并两个名称相同的scheme和table,但路径不同。我原以为它能用,但没用 它返回错误 'System.Data.SqlClient.SqlException:'C:'附近的语法不正确。 “C:”附近的语法不正确。标签“C”已声明。 标签名称在查询批处理或存储过程中必须是唯一的。“” 当我替换 从“+y+”.dbo.项中选择id、名称“+””,以 “值(1,'a')”和“插入到”+x+”dbo.item”到“插入到dbo.item”它起作用了问题是您在INSERT语句中的任何地方都没有使
从
“+y+”.dbo.项中选择id、名称
“+””,以
“值(1,'a')
”和“插入到
”+x+”dbo.item
”到“插入到dbo.item
”它起作用了问题是您在INSERT语句中的任何地方都没有使用连接2,您只使用到第一个数据库的连接
您可以在此处使用SQL批量复制类。你可以找到一个很好的教程
.尝试使用此示例创建一个与一个文件的连接,然后将另一个连接附加到该文件:然后您可以在查询中通过db名称引用它们。@mjwills Iupdated@mjwills“插入C:\\dbdata\\b.mdf.dbo.Crwitem(商品市场、类别、商品id、商品nm、商品价格、商品url、制造商、写入日期)从C:\\dbdata\\a\\b.mdf.dbo.Crwitem中选择商品市场、类别、商品id、商品nm、商品价格、商品url、制造商、写入方式“C:\\dbdata\\b.mdf.dbo.Crwitem
不是有效的表名。我怀疑您打算使用dbo.Crwitem
@mjwills。我知道“\\”语法不会返回错误,所以我尝试用字符串替换方法和正则表达式等替换“\\”到“\”,但没有成功
private void Merge_Click(object sender, RoutedEventArgs e) {
string x = // same name scheme but different path 1
// c:\dbdata\b.mdf
Files.Items[0].ToString(); //from listbox 1
string y = // same name scheme but different path 2
// c:\dbdata\a\b.mdf
Files2.Items[Files2.SelectedIndex].ToString(); //from listbox 2
string connect = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + x + ";Integrated Security=True;Connect Timeout=30";
string connect2 = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + y + ";Integrated Security=True;Connect Timeout=30;Pooling=False;";
string insert = "INSERT INTO " + x + ".dbo.item" +
" (id, name)" +
// same table name 1
" SELECT id, name" +
"FROM " + y + ".dbo.item"; //same table name 2
string q = @"select * from dbo.item ";
using (SqlConnection connection = new SqlConnection(connect))
{
connection.Open();
using (SqlConnection connection2 = new SqlConnection(connect2))
{
connection2.Open();
SqlCommand commandinsert = new SqlCommand(insert, connection);
var temp = commandinsert.ExecuteReader();
}
}