如何删除记录?

时间:2009-08-27 08:14:34

标签: c# mysql sql vb.net

我在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。我不希望显示记录,我只是希望它在后面运行。

5 个答案:

答案 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#做它,但因为这对我来说似乎是一个数据库问题,所以我不会把所有记录都拉到客户端然后把它们丢回去。