OleDbException 未处理 - 条件表达式中的数据类型不匹配
本文关键字:数据类型 不匹配 表达式 未处理 条件 OleDbException | 更新日期: 2023-09-27 18:37:15
我收到错误
OleDbException 未处理 - 条件中的数据类型不匹配 表达
在 OleDbDataReader re = cmd.ExecuteReader() 行上,任何人都可以帮助我吗?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace posSystem
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=userName.accdb");
OleDbCommand cmd = new OleDbCommand("Select * From userAndPAss Where ID = '" + txtBoxUserName + "' and Password = '" + txtBoxPassword + "';", conn);
conn.Open();
OleDbDataReader re = cmd.ExecuteReader();
if(re.Read()
{
MessageBox.Show("Login Successfull");
}
else{
MessageBox.Show("Login NOT Successfull, Try again!");
}
}
}
}
始终使用参数来避免 sql 注入:
OleDbCommand cmd = new OleDbCommand("Select * From userAndPAss Where ID = @id and Password = @password", conn);
cmd.Parameters.AddWithValue("@id", txtBoxUserName.Text);
cmd.Parameters.AddWithValue("@password", txtBoxPassword.Text);
您需要指定文本框的 Text 属性,而不是文本框控件本身。
我对连接到 Access 知之甚少,但以下是您可能需要检查的一些典型问题:
- 检查表列的数据类型 - "ID"真的是一个字符串吗?
- 检查列名是否是 Access 中的保留关键字(尤其是"密码")
- 如果单元格值为空(使用"Nz")