我真的有一个C#项目上的数据库连接问题。我创造了我的数据库中的MS Access,每当我运行查询命令(方法已被分配给特定的按钮),我上adapter.Fill(dataset);
行代码中的错误(OledbException was unhandled
)说,OLEDB数据库连接
没有coinciden洛杉矶tipos de datos en laexpresiónde criterios。
OR
有一个在数据类型在条件表达式不匹配
namespace Repuesto
{
public partial class Form2 : Form
{
OleDbConnection connection = new OleDbConnection();
OleDbCommand command = new OleDbCommand();
DataSet dataset = new DataSet();
OleDbDataAdapter adapter = new OleDbDataAdapter();
string direction = Application.StartupPath + "\\Database1.accdb";
public Form2()
{
InitializeComponent();
InitializeData();
FillDataGrid();
}
public void InitializeData()
{
connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + direction;
connection.Open();
command = connection.CreateCommand();
connection.Close();
}
private void FillDataGrid()
{
dataGridView1.DataSource = null;
dataset = new DataSet();
connection.Open();
command.CommandText = "select * from Consulta1 order by Id";
adapter = new OleDbDataAdapter(command);
adapter.Fill(dataset);
connection.Close();
dataGridView1.DataSource = dataset.Tables[0];
}
public void DeleteRow()
{
dataset = new DataSet();
connection.Open();
command.CommandText = "delete from Consulta1 where Id = '" + dataGridView1.CurrentRow.Cells[0].Value.ToString() + "'";
adapter = new OleDbDataAdapter(command);
adapter.Fill(dataset);
connection.Close();
for (int i = 1; i < dataGridView1.Columns.Count; i++)
{
dataGridView1.Columns[i].Visible = true;
}
FillDataGrid();
}
public void AddRow()
{
Form1 form1 = new Form1();
var dateRecibido = DateTime.Parse(form1.dateTimePickerFechaRecibida.Value.ToString()).ToShortDateString();
var dateSalido = DateTime.Parse(form1.dateTimePickerFechaSalida.Value.ToString()).ToShortDateString();
dataset = new DataSet();
connection.Open();
command.CommandText = "insert into Consulta1([Fecha Recepcion], [Cantidad Recibido], [Denominación], [Ubicación], [Nº Referencía], [Proveedor], [Fecha Salida], [Cantidad Salida]) values "
+ "('" + dateRecibido + "','" + form1.textBoxCantidadRecibido.Text + "','" + form1.textBoxDenominacion.Text
+ "','" + form1.textBoxUbicacion.Text + "','" + form1.textBoxNoReferencia.Text + "','" + form1.textBoxProveedor.Text + "','" + dateSalido + "','" + form1.textBoxCantidadSalido.Text + "')";
adapter = new OleDbDataAdapter(command);
adapter.Fill(dataset);
connection.Close();
for (int i = 1; i < dataGridView1.Columns.Count; i++)
{
dataGridView1.Columns[i].Visible = true;
}
FillDataGrid();
}
}
}
谁能帮助解释为什么我得到这个错误?谢谢!
这是没有必要在这里呐喊您的问题,我们都可以读好:。你有三个单独的'adapter.Fill(数据集);'调用。哪一个抛出异常? (我怀疑它在'AddRow()'中,我的心理调试技巧告诉我这是因为你使用字符串连接来设置字段值,而不是正确地参数化你的SQL。)但是你需要真正确定问题,而且你有这些信息就在你面前(我们没有)。请[编辑]您的问题,以更具体地了解问题实际发生的位置。 –
:-) ..他们都抛出同样的异常。我很抱歉,但我是数据库连接的新手,以及它的工作原理,如果我在代码中输入值,但是当输入通过文本框完成时,它会抛出异常,它真的强调我:-( – user2554925
他们可以' t ** all **抛出异常,因为它们中至少有一个是简单的'SELECT *',并且它**不能**具有数据类型不匹配。再次检查。(再次),**不要使用'concatenation **'将值分配给列,使用'parameters'代替,在那里你可以为列指定正确的数据类型(在这里搜索'[c#]参数化查询'应该找到一些结果;事实上,前两个我看到似乎非常有用。) –