【问题标题】:sql database search record in database using listview使用listview在数据库中搜索sql数据库记录
【发布时间】:2014-03-03 03:08:00
【问题描述】:

美好的一天。如何在 C# 中的程序中进行搜索?它会从 SQL 数据库中搜索记录,然后在列表视图中显示记录。谢谢你

我尝试在我的程序中添加这行代码,但出现错误消息: 已经有一个打开的 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);
            }
        }
    }
}

【问题讨论】:

  • 你有没有尝试过?您是要搜索方法的 c# 代码,还是 SQL 查询的代码?
  • 我尝试过编码,但它不起作用。我要求搜索方法的 c# 代码。我希望我的程序有搜索栏。
  • 您的问题涉及的范围非常广泛。您需要哪些具体部分的帮助? SQL 查询、数据访问、列表视图?请将其缩小到一个具体问题。我们不会为你写完整的东西。
  • 我已经发布了我的代码。请检查
  • 我认为您不需要在每个命令中重新建立 SQL 连接。另外,如果您还没有,请不要忘记之后关闭您的连接。

标签: c# sql-server-2012


【解决方案1】:

这里有一些可能会导致问题或冲突的事情。它们可能是不必要的,但它只会让你的代码更整洁。

  1. 在您的 SQL 连接中创建 SQL 命令对象:

    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();
        }
    }
    

【讨论】:

    【解决方案2】:

    您的代码缺少“使用”块。使用 using 块来确保处理连接。像这样:

    using (SqlConnection sqlConn = new SqlConnection())
    {
        conn.Open();
        Sqlmd.Connection = sqlConn;
        SqlDataAdapter da = new SqlDataAdapter(Sqlmd);
       //code goes here...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多