【发布时间】:2014-09-30 11:24:23
【问题描述】:
我在 SQL Server 2008 的同一个数据库中有两个表。我想将一个表的内容复制到另一个具有相同架构的空表,但是当我执行语句时
OleDbDataAdapter da = new OleDbDataAdapter("select * into dbo.leadmastersnew from dbo.leadmasters", myConnection);
它会抛出一个错误,指出该表已存在于数据库中。
我希望如果表已经存在,应该删除表,因为上面的 SQL 查询创建了表并将内容复制到它。
请推荐
我的代码是
private void button5_Click(object sender, EventArgs e)
{
OleDbConnection myConnection = new OleDbConnection("File Name=E:\\Vivek\\ImplementUdl\\ImplementUdl\\new.udl");
try
{
myConnection.Open();
if (myConnection.State == ConnectionState.Open)
MessageBox.Show("Connection opened successfully!");
else
MessageBox.Show("Connection could not be established");
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter("select * into dbo.leadmastersnew from dbo.leadmasters", myConnection);
da.Fill(ds);
MessageBox.Show("Data Copied!!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
myConnection.Close();
}
return;
}
【问题讨论】:
-
为什么不使用临时表而不是真实表?即
dbo.#leadmastersnew。它将仅在您的连接范围内可见,并在连接关闭时自动删除。 -
@AndyKorneyev 好主意,但我该如何实现它。?我是 C# 新手
-
正如我上面提到的 - 你应该只是表名前面有
#,例如dbo.#leadmastersnew。顺便说一句 - 这不是 c# 功能,而是 sql server 的功能。 -
@AndyKorneyev 感谢您的回复。但是如果表已经存在并且我想在不删除表的情况下向其中添加数据该怎么办?这只是另一个疑问。希望你不介意
-
但是,如果您不想使用临时表,而只想插入现有表而不删除它 - 您应该使用类似
insert into dbo.leadmastersnes (column1, column2 etc...) select value1, value2 etc... from dbo.leadmasters而不是查询,因为select ... into tablexxx隐式创建tablexxx表。
标签: c# sql sql-server-2008