sql数据库使用listview在数据库中搜索记录

时间:2014-03-03 03:08:00

标签: c# sql-server-2012

美好的一天。如何在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);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

以下是可能导致问题或冲突的一些事情。它们可能是不必要的,但它只是扼杀了你的代码。

  1. 在SQL连接中创建SQL Command对象:

    MySQLConnection = new SQLConnection(/*Connection string here*/);
    command = MySQLConnection.CreateCommand();
    
  2. 使用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...
}