以单独的形式使用数据库连接

时间:2012-09-30 22:47:40

标签: c# database connection

我的主窗体有一个连接到数据库的数据网格视图。然后我有一个按钮,打开一个单独的表格,我在那个辅助表格上有几个按钮等。

我需要从辅助表单查询数据库,但我不确定如何在不创建全新连接的情况下执行此操作,由于程序已连接到数据库,因此我认为不需要。我只是不确定如何引用我在第一个表单中创建的oleDB连接(我没有编写代码,我使用datagridview上的小箭头使用visual studio将它连接到数据库)

现在不是创建新连接,而是如何引用主表单中的第一个连接?

这是我的代码:

//parameterized update query
string updateCommandString = "UPDATE RoomsTable SET [Date Checked]=@checkedDate WHERE ID = @id";
using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\users\spreston\documents\visual studio 2012\Projects\roomChecksProgram\roomChecksProgram\roomsBase.accdb"))
{

    using (OleDbCommand updateCommand = new OleDbCommand())
    {
        OleDbTransaction transaction = null;
        updateCommand.Connection = conn;
        updateCommand.Transaction = transaction;    
        updateCommand.CommandText = updateCommandString;
        updateCommand.CommandType = CommandType.Text;
        updateCommand.Parameters.AddWithValue("@checkedDate", this.dateTimePicker1.Value.ToShortDateString());
        updateCommand.Parameters.AddWithValue("@id", row.roomID);
        try
        {
            conn.Open();
            transaction = conn.BeginTransaction();
            updateCommand.Transaction = transaction;
            updateCommand.ExecuteNonQuery();
            transaction.Commit();
            conn.Close();
            conn.Dispose();
        }
        catch(OleDbException ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }
    }
}

2 个答案:

答案 0 :(得分:1)

从设计的角度来看,您应该考虑为表单创建数据访问层。您可以创建方法来为您检索这些Db结果,以便合并该代码并将其与表单功能分开。它可能只是一个小项目,但这是一个很好的实践,如果它是一个你想要成长的项目,你会希望它可以扩展。

这样的东西
class SomethingDA {
   static DataTable GetMyStuff(your params) {
     // establish connection, get your results
   }
}

然后,您可以致电SomethingDa.GetMyStuff()获取所需内容。

答案 1 :(得分:0)

如果您使用“Using”语句,则在运行此代码后将关闭您的连接。您实际上并不需要conn.Close()conn.Dispose()语句。使用就是为你做的。

最好的办法是再次打开连接。尽快打开和关闭连接通常是一种很好的做法,但如果您的Access数据库是本地的,则可能不那么重要。这通常不会对性能产生太大影响,因为场景后面的OLE DB驱动程序将汇集连接并使其保持打开一段时间。

相关问题