C# 数据层的ExecuteOnQuery连接错误

C# 数据层的ExecuteOnQuery连接错误,c#,enterprise-library,data-layer,C#,Enterprise Library,Data Layer,当前此测试windows窗体应用程序存在问题。构造函数将数据添加到datagridview。但是,当我单击该按钮时,它无法添加任何内容来运行sql命令,错误为ExecuteOnQuery:Connection属性尚未初始化。下面是我的代码。我发现了类似的问题,但它们没有通过在代码中的多个点调用数据库来解决这个问题 namespace TestApplication { public partial class Form1 : Form { public SqlDatabase db;

当前此测试windows窗体应用程序存在问题。构造函数将数据添加到datagridview。但是,当我单击该按钮时,它无法添加任何内容来运行sql命令,错误为ExecuteOnQuery:Connection属性尚未初始化。下面是我的代码。我发现了类似的问题,但它们没有通过在代码中的多个点调用数据库来解决这个问题

namespace TestApplication
{
public partial class Form1 : Form
{
    public SqlDatabase db;
    string myConnectionString = ConfigurationManager.ConnectionStrings["DF06Data_Tools"].ToString();
    public Form1()
    {
        InitializeComponent();
        db = new SqlDatabase(myConnectionString);
        UpdateGrid();

    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    public void UpdateGrid()
    {
        string sql = "SELECT *  FROM [Data_Tools].[dbo].[TestTable]";
        DbCommand cmd = db.GetSqlStringCommand(sql);
        DataSet TableDataSet = db.ExecuteDataSet(cmd);
        dataGridView1.DataSource = TableDataSet.Tables[0];
        cmd.Dispose();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string sql = "INSERT INTO [Data_Tools].[dbo].[TESTTABLE] (name, id) VALUES('bob', '8')";
        DbCommand cmd = db.GetSqlStringCommand(sql);
        cmd.ExecuteNonQuery();
        UpdateGrid();
    }
}
}

在调用ExecuteOnQuery之前,需要打开连接。构造函数中的调用打开连接,发出命令,然后为您关闭连接

发件人:

调用ExecuteDataSet会打开连接,填充数据集, 并在返回结果之前关闭连接

也来自:


所以您需要使用sqlcommand而不是DBcommand?谢谢
private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}