我正在嘗試更新一個簡單的ms訪問數據庫。我在某些表格上遇到例外情況,經過搜索,我發現Microsoft Support - Syntax Error。我相信這意味着其中一個列名使用保留字。這似乎是這種情況,因爲除了那些以「GUID」作爲列名之一的保留字外,所有的表都更新。此頁面還聲明我應該使用OleDbAdapter和DataSet,它應該可以解決問題。很遺憾,我無法更改該列的名稱。這超出了我的控制範圍,所以我必須處理給我的東西。使用OleDbDataAdapter和DataSet來更新Access.mdb
我沒有必要用數據庫做很多工作,並且我從互聯網上的例子中學到的所有知識(可能都是壞的)。那麼使用OleDbAdapter和dataSet更新數據庫的正確方法是什麼?
我不認爲我應該使用DataTable或OleDbCommandBuilder,我相信該解決方案與參數有關。但我的谷歌技術很薄弱。
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " +
Data Souce=" + source);
conn.Open();
OleDbAdapter adapter = new OleDbDataAdapter("SELECT * From " + table, conn);
OleDbCommandBuiler cmdBuiler = new OleDbCommandBuilder(adapter);
DataSet = new DatSet();
adapter.InsertCommand = cmdBuilder.GetInertCommand(true); // Is this necessary?
adapter.Fill(dataSet, table);
DataTable dataTable = dataSet.Tables[table]; // Do I need a DataTable?
DataRow row = dataTable.
row [ attribute ] = field; // Do this for all attributes/fields. I think this is wrong.
dataTable.rows.Add(row);
adapter.Update(dataTable); //<--"Syntax error in INSERT INTO statement." Exception
這樣做的伎倆,除了我不得不仍然使用數據集。否則它會在'adapter.Fill'處引發異常。 'System.ArgumentException'異常'''「對象不是ADODB.RecordSet或ADODB.Record。\ r \ n參數名稱:adodb」}「。謝謝馬特。 – SaulBack 2011-05-04 18:38:39
謝謝,這是我的第一個回答,所以我很高興它爲你工作! – Matt 2011-05-04 19:19:12
如果您使用'OleDbCommandBuilder',則可以使用'cmdBuilder.QuotePrefix =「[」;'和'cmdBuilder.QuoteSuffix =「]」;'。 – 2017-10-11 18:52:17