如何从SQL Server数据库中删除表行
本文关键字:删除 数据库 Server SQL | 更新日期: 2023-09-27 18:01:54
我在试图删除行时遇到麻烦。
在ListBox
控件上选择并显示所有行。
然后,当调用btnObrisi_Click
事件(Obrisi = delete)时,从ListBox
中选择的项将被删除。
该项实际上是从控件中删除,但该值并未从数据库中删除。
这是我使用的代码:
private string conString = @"Data Source=.'SQLEXPRESS;AttachDbFilename=|DataDirectory|'Database1.mdf;Integrated Security=True;User Instance=True";
private SqlConnection con;
private SqlCommand com;
private DataTable dt;
private SqlDataAdapter da;
private DataTable SelectAll()
{
con = new SqlConnection(conString);
com = new SqlCommand();
dt = new DataTable();
da = new SqlDataAdapter();
com.Connection = con;
com.CommandType = CommandType.Text;
com.CommandText = "SELECT * FROM predmeti";
da.SelectCommand = com;
da.Fill(dt);
return dt;
}
private void Obrisi(int id)
{
con = new SqlConnection(conString);
com = new SqlCommand();
com.Connection = con;
com.CommandType = CommandType.Text;
com.CommandText = "DELETE FROM predmeti WHERE predmetID = @predmetID";
com.Parameters.AddWithValue("@predmetID", id);
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("Obrisano");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
private void Citaj()
{
listBox1.ValueMember = "predmetID";
listBox1.DisplayMember = "ime_predmeta";
listBox1.DataSource = SelectAll();
}
private void btnOsvezi_Click(object sender, EventArgs e)
{
Citaj();
}
private void Form1_Load(object sender, EventArgs e)
{
Citaj();
}
private void btnObrisi_Click(object sender, EventArgs e)
{
int id = Convert.ToInt32(listBox1.SelectedValue);
Obrisi(id);
Citaj();
}
当你在项目中有一个数据库文件,然后你构建项目,数据库文件可以从根项目文件夹复制到输出(bin'debug或bin'release)文件夹。
该行为由数据库文件上的Copy To Output Directory
属性控制。
如果您将此属性设置为"总是复制",则每次构建项目时,都会将数据库文件的新副本从根项目文件夹复制到输出目录,覆盖已经存在的数据库文件并销毁您在之前的调试会话中所做的更改。
建议将此属性更改为Copy Never
或Copy if Newer
请参阅MSDN上的详细说明
连接字符串中的快捷方式|DataDirectory|
指向(对于winforms项目)当前项目的bin'debug或bin'release相对子文件夹,程序所做的任何更改都适用于位于那里的数据库,但这些更改在下次运行时被覆盖