C# - INSERT INTO 语句中的语法错误(System.Data.dll 中发生“System.Data.OleDb.OleDbException”类型的未处理异常)
Posted
技术标签:
【中文标题】C# - INSERT INTO 语句中的语法错误(System.Data.dll 中发生“System.Data.OleDb.OleDbException”类型的未处理异常)【英文标题】:C# - Syntax error in INSERT INTO statement (An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll) 【发布时间】:2016-04-17 15:20:04 【问题描述】: System.Data.OleDb.OleDbCommandBuilder cb; //command builder
cb = new System.Data.OleDb.OleDbCommandBuilder(boosterbaseDa); //re-establish temporary connection
DataRow dRow = boosterbaseDs.Tables[drpCardSet.Text].NewRow(); //create new row in set
dRow[0] = drpCardSet.Text + "-EN" + txtCardSetNo.Text; //grab the data
dRow[1] = txtCardName.Text;
dRow[2] = drpCardRarity.Text;
dRow[3] = drpCardCatagory.Text;
dRow[4] = updCardInStock.Value;
MessageBox.Show(dRow[0] + ", " + dRow[1] + ", " + dRow[2] + ", " + dRow[3] + ", " + dRow[4]);
boosterbaseDs.Tables[drpCardSet.Text].Rows.Add(dRow); //add row
boosterbaseMaxRows = boosterbaseMaxRows + 1;
string cardTable = drpCardSet.Text;
boosterbaseDa.Update(boosterbaseDs, drpCardSet.Text);
我似乎卡在最后一行,错误为
System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常,INSERT INTO 语句中的语法错误
我知道也有类似的问题,但我对此非常坚持。
表确实存在,我可以连接到数据库。
进入(进入“LOB”表)的数据示例为 LOB-EN001、Bob、Common、Monster、1。
提前谢谢你 - 山姆
【问题讨论】:
您能出示您的 Insert 语句吗? 你初始化 DA 的选择命令是什么?您确定为该新行分配了正确的值吗?如果您查看详细信息,通常会有更多信息 这是它被初始化的地方: string sql = "SELECT * From " + drpCardSet.Text; boosterbaseDa = new System.Data.OleDb.OleDbDataAdapter(sql, boosterbaseCon);当传递带有新行的 DataRow 集合时,更新需要有效的 InsertCommand。是进一步的细节,是的,我相信它们一定是正确的值 由于表是一个变量 - 来自文本框 - 很有可能您正在尝试更新一个不存在或与 DA 构建目标不同的表, 我尝试用确切的表名 LOB 替换它,但出现了同样的错误 【参考方案1】:这是一种解决方案。
string connetionString = null;
OleDbConnection connection;
OleDbDataAdapter oledbAdapter = new OleDbDataAdapter();
string sql = null;
connetionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=../boosterbase.mdb";
connection = new OleDbConnection(connetionString);
sql = "insert into " + drpCardSet.Text + " values('" + drpCardSet.Text + "-EN" + txtCardSetNo.Text + "','" + txtCardName.Text + "','" + drpCardRarity.Text + "', '" + drpCardCatagory.Text + "', '" + updCardInStock.Text + "')";
try
connection.Open();
oledbAdapter.InsertCommand = new OleDbCommand(sql, connection);
oledbAdapter.InsertCommand.ExecuteNonQuery();
MessageBox.Show("Row(s) Inserted !! ");
catch (Exception ex)
MessageBox.Show(ex.ToString());
来自http://csharp.net-informations.com/dataadapter/insertcommand-oledb.htm
通过Update requires a valid InsertCommand when passed DataRow collection with new rows
【讨论】:
以上是关于C# - INSERT INTO 语句中的语法错误(System.Data.dll 中发生“System.Data.OleDb.OleDbException”类型的未处理异常)的主要内容,如果未能解决你的问题,请参考以下文章
“INSERT INTO 语句中的语法错误”错误 - 错误是啥?