美好的一天。如何在c#中搜索我的程序?它将从SQL数据库中搜索记录,然后在listview中显示记录。谢谢你
我尝试在我的程序中添加这行代码,但会显示一条错误消息: 已经有一个与此命令关联的开放DataReader必须先关闭
private void button6_Click(object sender, EventArgs e)
{
SqlConnection MySqlConnection;
SqlDataReader m_dr;
SqlCommand command;
DataTable p_table = new DataTable();
MySqlConnection = new SqlConnection("Data Source=A-A-PC\\MSSQLSERVER1;Initial Catalog=lights and sounds;User ID=sa;Password=itexpert;");
MySqlConnection.Open();
command = new SqlCommand("SELECT * FROM inventory WHERE package='" + textBox7.Text + "'", MySqlConnection);
m_dr = command.ExecuteReader();
if (m_dr.HasRows)
{
SqlCommand command1 = new SqlCommand("Select * from inventory", MySqlConnection);
p_table.Clear();
SqlDataAdapter m_d = new SqlDataAdapter("Select * from inventory", MySqlConnection);
m_d.Fill(p_table);
listView1.Items.Clear();
for (int i = 0; i < p_table.Rows.Count; i++)
{
DataRow drow = p_table.Rows[i];
if (drow.RowState != DataRowState.Deleted)
{
ListViewItem lvi = new ListViewItem(drow["id"].ToString());
lvi.SubItems.Add(drow["package"].ToString());
lvi.SubItems.Add(drow["number"].ToString());
listView1.Items.Add(lvi);
}
}
}
}
答案 0 :(得分:0)
以下是可能导致问题或冲突的一些事情。它们可能是不必要的,但它只是扼杀了你的代码。
在SQL连接中创建SQL Command对象:
MySQLConnection = new SQLConnection(/*Connection string here*/);
command = MySQLConnection.CreateCommand();
使用try{} catch{}
块。如果您在调试模式下遵循代码,这将捕获任何错误并显示正在发生的事情。例如
try
{
//your code here
}
catch(SqlException e){ Console.WriteLine(e.Message); }
finally
{ if (MySQLConnectrion != null)
{
MySQLConnection.Close();
}
}
答案 1 :(得分:0)
您的代码缺少“使用”块。使用使用块确保连接的处理。像这样:
using (SqlConnection sqlConn = new SqlConnection())
{
conn.Open();
Sqlmd.Connection = sqlConn;
SqlDataAdapter da = new SqlDataAdapter(Sqlmd);
//code goes here...
}