Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在整个应用程序中使用数据库连接类_C#_Winforms_Class_Connection String - Fatal编程技术网

C# 如何在整个应用程序中使用数据库连接类

C# 如何在整个应用程序中使用数据库连接类,c#,winforms,class,connection-string,C#,Winforms,Class,Connection String,我已经为MS Access数据库连接创建了一个类。它可以在我的Winforms应用程序中的大多数表单上正常工作。但是,我有一个表单,用户可以在其中添加、编辑或删除数据库中的信息。我已经用一个字符串构造了这个部分,但是当我删除之前在那里的长数据库连接字符串并用我创建的类替换它时,它会抛出一个异常 我试图通过删除字符串来更改代码,但我想使用string方法 这是我为delete button click事件编写的代码 string con = (@"Provider = Microsoft.ACE

我已经为MS Access数据库连接创建了一个类。它可以在我的Winforms应用程序中的大多数表单上正常工作。但是,我有一个表单,用户可以在其中添加、编辑或删除数据库中的信息。我已经用一个字符串构造了这个部分,但是当我删除之前在那里的长数据库连接字符串并用我创建的类替换它时,它会抛出一个异常

我试图通过删除字符串来更改代码,但我想使用string方法

这是我为delete button click事件编写的代码

 string con = (@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\folder\Desktop\ApplicationFolder\AppName\bin\Debug\DataBase\DatabaseName.accdb");

      string Query = "delete from Employees2 where EmployeeName = '" + 
      this.txtAdminFEmployee.Text + "' ; ";
      OleDbConnection ConnectionString = new OleDbConnection(con);
      OleDbCommand command = new OleDbCommand(Query, ConnectionString);
      OleDbDataReader reader;
      try
      {

        ConnectionString.Open();
        reader = command.ExecuteReader();



        DialogResult result = MessageBox.Show("Employee Deleted Successfully", 
        "Information",
        MessageBoxButtons.OK, MessageBoxIcon.Information);


        while (reader.Read())
        {

        }

      }

      catch (Exception ex)
      {
        MessageBox.Show("Error " + ex);
        ConnectionString.Close();
这是我创建的数据库类

using System.Data.OleDb;


namespace AppName
{
  class OledbConnect
  {
    public OleDbConnection con;

    public void Connection()
    {
      con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DatabaseName.accdb");
    }
  }
}

我需要知道如何使用该字符串中的数据库类。我试过不同的方法,但都不管用。我对c#还是个新手,谷歌并没有真正返回任何我可以使用的东西。谢谢

您的初始代码可以正常工作,但是在变量的命名中很明显存在混淆

string con = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\folder\Desktop\ApplicationFolder\AppName\bin\Debug\DataBase\DatabaseName.accdb";
(我从声明中去掉了不需要的括号;它只是一个字符串。)

将该字符串称为“con”有点混乱。我把它叫做“连接字符串”,或者简称为“cs”

  OleDbConnection ConnectionString = new OleDbConnection(con);
  OleDbCommand command = new OleDbCommand(Query, ConnectionString);
好的,您正确地创建了一个OleDbConnection,将连接字符串(con)传递给它的构造函数。这很好。但你把它称为连接字符串却让人困惑。它不是连接字符串;这就是连接,然后您的代码会正确地使用它

这样就行了。由于变量的错误命名,让人读起来很困惑,但编译器并不关心它们的名称是什么——它非常清楚ConConnectionString是一个OLEDB连接,并且当我看到它时,不会感觉到任何认知上的不和谐


如果您按照我的建议重命名原始代码中的变量,然后将该代码复制到您的类中(顺便说一句,我将其称为DbConnection;它的当前名称与另一个类名非常接近,这可能会让人混淆),注意每一条语句的作用和每一个变量所代表的内容,然后你就可以开始了。

你真的是在重新发明轮子。有很多更好/发展良好的库可以与JET数据库对话。例如:在相同的代码方法中看到sql代码和MessageBox代码…………请阅读有关层分离的内容。网络提供商中也有大量的内置功能,您忽略了这些功能。DataAdapter将“记住”您的连接,并根据需要打开/关闭它。将字符串粘在一起生成SQL是危险的(而且已经过时很多年了)。始终使用SQL参数。rcl的Simon-我做了您建议的所有事情,毕竟delete button click事件引发了一个异常。这是说它无法连接到数据库。你知道如何调试你的程序吗?