我为MS Access数据库连接创建了一个类。它可以在我的Winforms应用程序中的大多数表单上正常工作。但是,我有一个表单,用户可以在其中添加,编辑或删除数据库中的信息。我已经使用字符串构造了该部分,但是当我删除之前存在的长数据库连接字符串并将其替换为我创建的类时,它将引发异常。
我尝试通过删除字符串来更改代码,但我想使用字符串方法。
这是我用于删除按钮单击事件的代码
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#还是陌生的,Google并没有真正返回我可以使用的任何东西。谢谢
答案 0 :(得分:0)
您的初始代码有效,但是在变量命名上却很明显。
string con = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\folder\Desktop\ApplicationFolder\AppName\bin\Debug\DataBase\DatabaseName.accdb";
(我已经从声明中删除了不需要的括号;它只是一个字符串。)
调用该字符串“ con”有点令人困惑。我将其称为“ connectionString”,或者简称为“ cs”。
OleDbConnection ConnectionString = new OleDbConnection(con);
OleDbCommand command = new OleDbCommand(Query, ConnectionString);
确定,因此您可以正确创建一个OleDbConnection,并将连接字符串(con)传递给其构造函数。很好但是您将其混淆地称为ConnectionString。它不是连接字符串。是连接,您的代码此后可以正确使用它。
所以可行。由于变量的错误命名,使人难以理解,但是编译器不在乎它们的名称是什么-它非常清楚ConectionString是OleDbConnection,并且不会感到我在任何时候出现的认知失调我看着它。
如果按照我的建议重命名原始代码中的变量,然后将该代码复制到您的类中(顺便说一句,我将其称为DbConnection;它的当前名称与另一个类名非常接近,这可能也令人困惑),请注意每个语句的作用以及每个变量所代表的意思,那么您应该一切顺利。