我真的有一個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#]參數化查詢'應該找到一些結果;事實上,前兩個我看到似乎非常有用。) –