【问题标题】:Oracle database table in gridview网格视图中的 Oracle 数据库表
【发布时间】:2014-02-10 18:31:09
【问题描述】:

我想从我的 oracle 数据库中的查询中获取结果并将其放在 gridview 中。现在我的问题是,我不知道如何在 gridview 中输出它。我正在使用工具箱中的 gridview,并且我的 oracle 连接正在工作。我也有正确的SELECT 查询,我可以在列表框中输出它。我只是不知道如何在网格视图中执行此操作。我寻找它并遇到了这个:How to populate gridview with mysql? 虽然这对我没有帮助。

如何在 gridview 中输出,使其看起来与 oracle 数据库中的普通表完全相同?

我应该使用什么以及如何使用?

这是我的代码:

public void read()
        {
            try
            {
                var conn = new OracleConnection("")
                conn.Open();
                OracleCommand cmd = new OracleCommand("select * from t1", conn);
                OracleDataReader reader = cmd.ExecuteReader();
                DataTable dataTable = new DataTable();
            while (reader.Read())
            {
                var column1 = reader["vermogen"];
                column = (column1.ToString());
                listBox1.Items.Add(column);
            }
            conn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    }

【问题讨论】:

  • 链接的问题在哪些方面没有帮助?你说的是 ASP.NET GridView 还是 WinForms DataGridView?
  • @Steve Winforms。好吧,答案是使用mysql,完全没有解释。
  • 您只需初始化一个数据适配器并将结果加载到数据表中。然后将gridview 的数据源设置为该DataTable。正如链接指出的那样。它应该适用于任何数据库。

标签: c# winforms oracle gridview


【解决方案1】:

要将DataTable 绑定到DataGridView,只需将代码更改为

    public void read()
    {
        try
        {
            using(OracleConnection conn = new OracleConnection("....."))
            using(OracleCommand cmd = new OracleCommand("select * from t1", conn))
            {
                conn.Open();
                using(OracleDataReader reader = cmd.ExecuteReader())
                {
                     DataTable dataTable = new DataTable();
                     dataTable.Load(reader);
                     dataGridView1.DataSource = dataTable;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
 }

可以将 OracleDataReader 传递给 DataTable 的 Load 方法,然后将表准备好绑定到 DataGridView DataSource 属性。我还添加了一些 using 语句,以确保正确处理所使用的一次性物品。 (特别是 OracleConnection 在异常情况下不关闭是非常昂贵的)

【讨论】:

    【解决方案2】:

    你也可以使用DataSet

       public void read()
       {
           try
           {
               OracleConnection conn = new OracleConnection("");
               OracleCommand cmd = new OracleCommand("select * from t1", conn);
               conn.Open();
               cmd.CommandType = CommandType.Text;
               DataSet ds = new DataSet();
               OracleDataAdapter da = new OracleDataAdapter();
               da.SelectCommand = cmd;
               da.Fill(ds);
               dataGridView1.DataSource = ds.Tables[0];
    
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }
       }
    }
    

    【讨论】:

      【解决方案3】:

      首先建立连接以防万一,您没有使用连接字符串全局建立。然后对要执行的 oracle sql 命令使用 oleDbcommand。就我而言,它是“select * from table_name”,它将显示从表到数据网格的所有数据。我在一个按钮中编写了这段代码,以在数据网格上显示数据。

      {         
           OleDbConnection conn = new OleDbConnection("");
           OleDbCommand cmd = new OleDbCommand("select * from table_name", conn);
      
              {
                  conn.Open();
                  OleDbDataReader reader = cmd.ExecuteReader();
                  {
                      DataTable dataTable = new DataTable();
                      dataTable.Load(reader);
                      dataGridView1.DataSource = dataTable;
                  }
                  conn.Close();
              }
      }
      

      【讨论】:

      • 考虑添加关于如何以及为什么这是答案的解释。单独的代码 sn-p 对 OP 没有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多