【发布时间】: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 替换它,但出现了同样的错误
标签: c# database oledb unhandled-exception oledbconnection