作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
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");
}
}
}
最佳答案
我注意到了几个潜在的问题:
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/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!