【发布时间】:2021-05-20 21:48:58
【问题描述】:
// for delete it works, but for search no
// this is the delete part, afterwards I call the displaymethod to display the results after deletion
private void button1_Click(object sender, EventArgs e)
{
if (txtArtistDelete.Text != "")
{
command = new SqlCommand("delete from dbo.catalog where artist=@artist", connection);
connection.Open();
command.Parameters.AddWithValue("@artist", txtArtistDelete.Text);
command.ExecuteNonQuery();
connection.Close();
MessageBox.Show("Record deleted successfully!");
DisplayData();
ClearData();
}
else
{
MessageBox.Show("Please select an artist to delete");
}
}
private void DisplayData()
{
connection.Open();
DataTable dt = new DataTable();
adpter = new SqlDataAdapter("select * from dbo.catalog", connection);
adpter.Fill(dt);
dgvCatalog.DataSource = dt;
connection.Close();
}
// but after search I can not do that
private void btnCautare_Click(object sender, EventArgs e)
{
command = new SqlCommand("select * from dbo.catalog where title = @title", connection);
connection.Open();
command.Parameters.AddWithValue("@title", txtArtistDelete.Text);
DataTable dt = new DataTable();
adpter = new SqlDataAdapter("select * from dbo.catalog where title = @title", connection);
adpter.Fill(dt);
dgvCatalog.DataSource = dt;
command.ExecuteNonQuery();
connection.Close();
}
// I get this error:
// System.Data.SqlClient.SqlException: 'Must declare the scalar variable "@title".'
// I want to see in the datagridview only that searched record.
// How can I do that with SqlCommand and SqlDataAdapter?
如何使用 where 子句基于 SqlCommand 或 SqlDataAdapter 填充 datagridview? SqlDataAdapter 不适用于 where
【问题讨论】:
-
dt.Fill(reader),?您可以从command.ExecuteReader()获取读者。不要忘记使用using块处理所有 SQL 对象 -
注意:有很多 更有效的方法可以使用这些数据库提供程序对象,并且所有这些都有很好的文档记录。对于“搜索”,您可以使用 DGV 数据源的
RowFilter属性过滤现有结果。
标签: c# sql-server winforms datagridview