我在table1中有记录,如果记录存在,则必须复制到table2中。我想在将所有记录复制到另一个table2后删除table1中的那些记录。我仍然是数据库的初学者和一些研究,我在互联网上找到了一些教程如何连接数据库,代码易于理解,所以我出来了这个程序。这个代码只做复制部分,我仍然缺少删除部分。可以帮我弄清楚如何删除部分?我在msdn中找到了2个引用,但我不确定并且不理解给出的代码。
try
{
//create connection
System.Data.SqlClient.SqlConnection sqlConnection1 =
new System.Data.SqlClient.SqlConnection("Data Source=.dbname;Integrated Security=True;User Instance=True");
//command queries
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT INTO tblSend (ip, msg, date) SELECT ip, msg, date FROM tblOutbox";
cmd.Connection = sqlConnection1;
sqlConnection1.Open(); //open con
cmd.ExecuteNonQuery(); //execute query
sqlConnection1.Close(); //close con
}
catch (System.Exception excep)
{
MessageBox.Show(excep.Message);
}
如果我将查询替换为://cmd.CommandText =“DELETE tblSend WHERE id = 5”; 它只删除一行。但如果涉及许多记录呢?我是否需要考虑EOF的事情?我需要使用DataGridView吗? Becoz代码我没有使用DataGridView。我不希望显示记录,我只是希望它在后面运行。
答案 0 :(得分:1)
不,您不必担心EOF或使用DataGridView。正如您可以使用ExecuteNonQuery方法插入多行一样,使用DELETE时也可以这样做。
INSERT,UPDATE和DELETE等数据操作语句不会生成结果集,因此您通常会使用ExecuteNonQuery来运行它们。所有数据操作都在数据库服务器引擎中运行。
答案 1 :(得分:0)
DELETE FROM tblSend WHERE id = 5;
这将删除与WHERE条件匹配的所有行。
我不确定我是否理解DataGridView的相关性。如果是数据绑定,它也会自动删除记录。您只需要发出一次删除查询,其余部分应该自动发生,假设您的数据绑定正确。
答案 2 :(得分:0)
“如果它们存在”是什么意思?相比什么?
要删除表1中的多个记录,您必须创建一个遍历表并进行比较的循环。
伪代码:
forach (whatever as whut)
row = select whatever from table1.
if (whut == row)
copy row from table 1 to table 2;
Delete from table 1 where whut.id == row.id;
答案 3 :(得分:0)
DELETE FROM tblSend WHERE id = 5;
这是删除记录的一种解决方案。 如果要再次将标识键设置为0,请使用此代码
DBCC CHECKIDENT('tblSend', RESEED, 0);
然后按F5,
答案 4 :(得分:0)
如果我理解正确,你需要table2中table1的所有数据,然后删除table1。
选项
1)一旦你可以将table1重命名为table2并重新创建table1
,就需要它-- move the records to table 2, ok I assume it does not exist;)
RENAME TABLE table1 TO table2;
-- Create new table1 with same structure as table 2
CREATE TABLE table1 AS SELECT * FROM table2 WHERE 1=2;
2)假设您有类似主键的内容,请单独复制和删除
-- copy the records
INSERT table2(field1, field2, ...) SELECT field1, field2, ... FROM table1;
-- and delete them
DELETE FROM table1;
3)使用C#做它,但因为这对我来说似乎是一个数据库问题,所以我不会把所有记录都拉到客户端然后把它们丢回去。