目前我正在研究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?
非常感谢帮助我。如果我的问题听起来很荒谬,请问我。
答案 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");