从SQL连接和SELECT等字符串切换到连接类

时间:2016-03-24 14:15:36

标签: c# class datagridview database-connection connection-string

我试图找出如何使用SQL Server连接的类 和我的数据网格视图的人口。所以,在我将这样的事情作为我的按钮的Click事件之前,从我的数据库中选择所有内容。

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

因为我为每个按钮都有这些连接字符串,所以我想把它们放在一个类中来清理我的代码......所以我这样做了:

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

现在我想用这个类来填充我的datagridview ...我怎么能这样做? 例如,填充组合框就可以正常工作......

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

但我刚接触这个并且无法让它发挥作用...... 感谢所有帮助...

提前谢谢....

1 个答案:

答案 0 :(得分:2)

删除foreach并直接将数据表分配给DataSource属性。

dataGridView1.DataSource=con.QueryEx();