gpt4 book ai didi

c# - 连接到 MDB 数据库 C#

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:49 25 4
gpt4 key购买 nike

System.Data.dll 中发生类型为“System.Data.OleDb.OleDbException”的未处理异常

附加信息:无法使用'';文件已在使用这是错误指向的地方:

da.Fill(dt);

数据库位于我电脑上的C:\ChattBankMDB.mdb

数据库:http://puu.sh/hjQj0/d86ede4c00.png

当我按下按钮 1 时,我希望表单跟进并登录客户数据库,否则 messagebox.show 会提示登录失败。

表单上的按钮:

公共(public)部分类 CustLogin:表单{

OleDbConnection db = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\ChattBankMDB.mdb");
OleDbDataAdapter da = new OleDbDataAdapter();
DataTable dt = new DataTable();
public CustLogin()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
da = new OleDbDataAdapter("Select CustID, CustPassword From Customers", db);
da.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
if (UserText.Text == dt.Rows[i]["CustID"] && PassText.Text == dt.Rows[i]["CustPassword"])
{
WelcomeCust f = new WelcomeCust();
this.Hide();
f.Show();
}
else
{

MessageBox.Show("FAILURE TRY AGAIN");
}
}
}

最佳答案

我注意到了几个潜在的问题:

  • 数据库注入(inject)。
  • 纯文本密码。
  • 利用 SqlConnection

.mdb 不是 SQL 数据库,它实际上是 Microsoft Access 数据库。所以您需要实际使用 ADO.NET 连接。所以你的代码实际上应该是:

private readonly string dbConnection = ConfigurationManager.ConnectionStrings["..."].ConnectionString;
private const string query = "SELECT * FROM [Example] WHERE ([Id] = @Id);";

public void Example()
{
using(var connection = new OleDbConnection(dbConnection))
using(var command = new OleDbCommand(query, connection))
{
// Apply parameter, open connection, etc.
}
}

您利用参数来避免引入子查询。至于您的纯文本密码,您应该查看 BCrypt 或其他用于 Salt/Hash 方法的库。

那么对连接的更改应该可以缓解您的问题。

我认为您的下一个问题源于构建数据表之前的Fill

关于c# - 连接到 MDB 数据库 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com