如何将DataTable从一个类传递到另一个类

时间:2011-11-19 10:45:37

标签: c# mysql datagridview

目前我正在研究MySQL,对不起我的新手问题。这是我的问题

我有2个类,第一个是Windows Form,另一个是我想要包含SQL的所有进程的类。这是我在SQL Class中的代码

public void SampleQuery(string tablename)
    {
        DataTable dataTable;

        string query = "SELECT * FROM " + tablename;

        //Open connection
        if (this.OpenConnection() == true)
        {
            adapter = new MySqlDataAdapter(query,connection);

            dataTable =  new DataTable();
            adapter.Fill(dataTable);

            //close Connection
            this.CloseConnection();
            return;
        }

我想要做的是,使用DataGridView显示SQL中的数据。 是否可以在上面的SQL类中编写datagridview?或者必须在Windows窗体部分?

如果必须是在windows窗体中,如何抛出现在将所有数据保存到Windows Form类的dataTable?

非常感谢帮助我。如果我的问题听起来很荒谬,请问我。

5 个答案:

答案 0 :(得分:2)

您可以使用DataGrid DataSource属性。

示例代码管理想法:

class MyForm : Form
{
   public MyForm()
   {
      InitializeComponent();
      DataAccess  dataAccess = new DataAccess();
      m_dataGrid.DataSource = DataAccess.SampleQuery("MyTable");
   }
}

class DataAccess 
{
   public DataTable SampleQuery(string tablename)
   {
      DataTable dataTable;
      // 
      // Your Code
      // ..
      return dataTable;
   }
}

我认为Form Load事件处理程序是加载数据的好地方(不是构造函数;),如上所示)。你可以实现一些缓存(每次加载数据时如果窗体打开效率不高:))

答案 1 :(得分:1)

SampleQuery方法返回dataTable

public DataTable SampleQuery(string tablename) {
    // Fill dataTable...
    return dataTable
}

然后调用表单中的方法并将dataTable绑定到dataGridView

dataGridView.DataSource = SampleQuery("MyTable");

答案 2 :(得分:1)

在这种情况下,您将更改方法以返回DataTable而不是null(void),并以

结束
return dataTable;

然后在你打电话时抓住它:

DataGridView.BindingSource = yourDal.SimpleQuery("Foo");

我个人建议使用基于类的对象而不是DataTable,但DataTable可以工作。

答案 3 :(得分:1)

指定SampleQuery的{​​{1}}方法的返回类型。

DataTable

在winform中,使用static或instance方法。

//Instance method
public class Test
{
 public DataTable SampleQuery(string tablename)
 {
    DataTable dataTable=null;
    ....
    return dataTable;
 }
//or design a static method
 public static DataTable StaticSampleQuery(string tablename)
 {
    DataTable dataTable=null;
    ....
    return dataTable;
 }
}

答案 4 :(得分:1)

从sqlclass返回Datatable并将该datatable指定为grid

的数据源
     public DataTable SampleQuery(string tablename)
            {
                DataTable dataTable;

                string query = "SELECT * FROM " + tablename;

                //Open connection
                if (this.OpenConnection() == true)
                {
                    adapter = new MySqlDataAdapter(query,connection);

                    dataTable =  new DataTable();
                    adapter.Fill(dataTable);

                    //close Connection
                    this.CloseConnection();
                    return dataTable;
                }
              return dataTable;
            }

将datatable指定为datasource

dataGridView.DataSource = SampleQuery("tablename");