从 SQL 连接和 SELECT 等字符串切换到连接 class
Switching from SQL connection and SELECT etc. strings to a connection class
我想知道如何使用 class 进行 SQL 服务器连接
和我的数据网格视图的人口。所以在我有这样的东西作为我的按钮的点击事件之前 select 我数据库中的所有内容。
SqlConnection con = new SqlConnection(@"Data Source =SQLEXPRESS; Initial Catalog = TestDB;");
SqlConnection myConnection = new SqlConnection("user id=Admin;" +
"password=05370537;server=localhost;" +
"Trusted_Connection=yes;" +
"database=TestDB; " +
"connection timeout=30");
SqlCommand comm = new SqlCommand();
comm.Connection = myConnection;
comm.CommandText = "SELECT * FROM Data";
DataTable dta = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(comm);
adapter.Fill(dta);
dataGridView1.DataSource = dta;
myConnection.Close();
因为每个按钮都有这些连接字符串,所以我想将它们放在 class 中以清理我的代码...所以我这样做了:
public class SqlDbConnect
{
private SqlConnection con;
public SqlCommand Cmd;
private SqlDataAdapter sda;
public DataTable dta;
public SqlDbConnect()
{
con = new SqlConnection("user id=Admin;" +
"password=05370537;server=localhost;" +
"Trusted_Connection=yes;" +
"database=Omnimet; " +
"connection timeout=30");
con.Open();
}
public void SqlQuery(string queryText)
{
Cmd = new SqlCommand(queryText, con);
}
public DataTable QueryEx()
{
sda = new SqlDataAdapter(Cmd);
dta = new DataTable();
sda.Fill(dta);
return dta;
}
public void NonQueryEx()
{
try
{
Cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error",MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
现在我想使用 class 来填充我的数据网格视图...我该怎么做?
例如,填充组合框就可以正常工作...
con = new SqlDbConnect();
con.SqlQuery("INSERT INTO dbo.ESQUEL (Name) VALUES (@NameP)");
con.Cmd.Parameters.AddWithValue("@NameP", textBox.Text.Trim());
con.NonQueryEx();
con.SqlQuery("SELECT * FROM dbo.ESQUEL");
comboBox.Items.Clear();
foreach (DataRow dr in con.QueryEx().Rows)
{
comboBox.Items.Add(dr[1].ToString());
}
我想它应该看起来像我这里的虚拟代码
con = new SqlDbConnect();
con.SqlQuery("SELECT * FROM Data");
con.QueryEx();
foreach(DataRow dr in con.QueryEx().Rows)
{
dataGridView1.DataSource=SqlDbConnect.dta;
}
但我是新手,无法让它工作...
感谢所有帮助...
提前谢谢你....
摆脱foreach,直接将datatable赋给DataSource属性。
dataGridView1.DataSource=con.QueryEx();
我想知道如何使用 class 进行 SQL 服务器连接 和我的数据网格视图的人口。所以在我有这样的东西作为我的按钮的点击事件之前 select 我数据库中的所有内容。
SqlConnection con = new SqlConnection(@"Data Source =SQLEXPRESS; Initial Catalog = TestDB;");
SqlConnection myConnection = new SqlConnection("user id=Admin;" +
"password=05370537;server=localhost;" +
"Trusted_Connection=yes;" +
"database=TestDB; " +
"connection timeout=30");
SqlCommand comm = new SqlCommand();
comm.Connection = myConnection;
comm.CommandText = "SELECT * FROM Data";
DataTable dta = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(comm);
adapter.Fill(dta);
dataGridView1.DataSource = dta;
myConnection.Close();
因为每个按钮都有这些连接字符串,所以我想将它们放在 class 中以清理我的代码...所以我这样做了:
public class SqlDbConnect
{
private SqlConnection con;
public SqlCommand Cmd;
private SqlDataAdapter sda;
public DataTable dta;
public SqlDbConnect()
{
con = new SqlConnection("user id=Admin;" +
"password=05370537;server=localhost;" +
"Trusted_Connection=yes;" +
"database=Omnimet; " +
"connection timeout=30");
con.Open();
}
public void SqlQuery(string queryText)
{
Cmd = new SqlCommand(queryText, con);
}
public DataTable QueryEx()
{
sda = new SqlDataAdapter(Cmd);
dta = new DataTable();
sda.Fill(dta);
return dta;
}
public void NonQueryEx()
{
try
{
Cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error",MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
现在我想使用 class 来填充我的数据网格视图...我该怎么做? 例如,填充组合框就可以正常工作...
con = new SqlDbConnect();
con.SqlQuery("INSERT INTO dbo.ESQUEL (Name) VALUES (@NameP)");
con.Cmd.Parameters.AddWithValue("@NameP", textBox.Text.Trim());
con.NonQueryEx();
con.SqlQuery("SELECT * FROM dbo.ESQUEL");
comboBox.Items.Clear();
foreach (DataRow dr in con.QueryEx().Rows)
{
comboBox.Items.Add(dr[1].ToString());
}
我想它应该看起来像我这里的虚拟代码
con = new SqlDbConnect();
con.SqlQuery("SELECT * FROM Data");
con.QueryEx();
foreach(DataRow dr in con.QueryEx().Rows)
{
dataGridView1.DataSource=SqlDbConnect.dta;
}
但我是新手,无法让它工作... 感谢所有帮助...
提前谢谢你....
摆脱foreach,直接将datatable赋给DataSource属性。
dataGridView1.DataSource=con.QueryEx();