C# 使用DataGrid更新访问表时出错
我正在使用DataGridView更新、插入或删除表中的数据。代码可以很好地插入数据,但在更新或删除数据或行时会出现错误。代码如下C# 使用DataGrid更新访问表时出错,c#,sql,C#,Sql,我正在使用DataGridView更新、插入或删除表中的数据。代码可以很好地插入数据,但在更新或删除数据或行时会出现错误。代码如下 OleDbCommand sCommand; OleDbDataAdapter sAdapter; OleDbCommandBuilder sBuilder; DataSet sDs; DataTable sTable; //Load Data... private void button1_Click(objec
OleDbCommand sCommand;
OleDbDataAdapter sAdapter;
OleDbCommandBuilder sBuilder;
DataSet sDs;
DataTable sTable;
//Load Data...
private void button1_Click(object sender, EventArgs e)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + Application.StartupPath + @"\Label-Data.accdb";
string sql = "SELECT * FROM _Default";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
sCommand = new OleDbCommand(sql, connection);
sAdapter = new OleDbDataAdapter(sCommand);
sBuilder = new OleDbCommandBuilder(sAdapter);
sDs = new DataSet();
sAdapter.Fill(sDs, "_Default");
sTable = sDs.Tables["_Default"];
connection.Close();
dataGridView1.DataSource = sDs.Tables["_Default"];
dataGridView1.ReadOnly = true;
button4.Enabled = false;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}
//Add or Edit...
private void button2_Click(object sender, EventArgs e)
{
dataGridView1.ReadOnly = false;
button4.Enabled = true;
button2.Enabled = false;
button3.Enabled = false;
}
//Delete...
private void button3_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Do you want to delete this row ?", "Delete", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
sAdapter.Update(sTable);
}
}
//Save...
private void button4_Click(object sender, EventArgs e)
{
sAdapter.Update(sTable);
dataGridView1.ReadOnly = true;
button4.Enabled = false;
button2.Enabled = true;
button3.Enabled = true;
}
它在sAdapter.Update(稳定)上给出一个错误;
错误是
查询表达式“((ID=?)和((?=1且Prn为空)或((?=1且_Copy为空)或(_Copy=?)和((?=1且_Item为空)或(_Item=?)和((?=1且_Design为空)或(_Design=?)和((?=1且托盘_No为空)或(托盘_No=?)和(')中的语法错误
如何消除此错误?试试这个
private void button3_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Do you want to delete this row ?", "Delete", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
string sql="write your Delete query"
OleDbCommand dCommand = new OleDbCommand(sql, connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(sAdapter);
sAdapter.DeleteCommand=dCommand
sAdapter.Update(sTable);
}
}
//Save...
private void button4_Click(object sender, EventArgs e)
{
string sql="write your update query"
OleDbCommand uCommand = new OleDbCommand(sql, connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(sAdapter);
sAdapter.UpdateCommand=uCommand
sAdapter.Update(sTable);
dataGridView1.ReadOnly = true;
button4.Enabled = false;
button2.Enabled = true;
button3.Enabled = true;
}
你有一些非常奇怪的字段名,前导下划线是怎么回事 但框架似乎无法自动生成插入和更新SQL 请看下面的问题,该问题描述如何向适配器添加您自己的UPDATE和INSERT语句
或者,您也可以使用VisualStudio的数据集设计器进行查看。在最后一个“AND”运算符之后是否缺少某些内容?请参阅本文,这是添加参数的好方法。