Tôi đang cố cập nhật cơ sở dữ liệu truy cập ms đơn giản. Tôi nhận được Ngoại lệ trên một số bảng nhất định, sau khi tìm kiếm, tôi đã tìm thấy Microsoft Support - Syntax Error. Tôi tin rằng nó có nghĩa là một trong những tên cột sử dụng một từ dành riêng. Điều này có vẻ là trường hợp, vì tất cả các bảng cập nhật ngoại trừ những người có "GUID" là một trong những tên cột, một từ dành riêng. Trang này cũng nói rằng tôi nên sử dụng OleDbAdapter và DataSet, điều này sẽ giải quyết được vấn đề. Rất tiếc, tôi không thể thay đổi tên của cột. Đó là ngoài tầm kiểm soát của tôi, vì vậy tôi phải làm việc với những gì được cho tôi.Sử dụng OleDbDataAdapter và Số liệu để cập nhật Access.mdb
Tôi không phải làm việc với cơ sở dữ liệu nhiều, và mọi thứ tôi biết tôi đã học được từ các ví dụ từ internet (có lẽ là những điều xấu ở đó). Vậy cách thích hợp để cập nhật cơ sở dữ liệu bằng OleDbAdapter và dataSet là gì?
Tôi không nghĩ mình nên sử dụng DataTable hoặc OleDbCommandBuilder, và tôi tin rằng giải pháp có liên quan đến các tham số. Nhưng kỹ năng googleing của tôi yếu.
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
Điều này đã thực hiện thủ thuật, trừ khi tôi vẫn phải sử dụng Số liệu. Nếu không nó sẽ ném một ngoại lệ tại 'adapter.Fill'. Ngoại lệ là đối tượng 'System.ArgumentException'' {"không phải là ADODB.RecordSet hoặc ADODB.Record. \ R \ nParameter name: adodb"} '. Cảm ơn Matt. – SaulBack
Cảm ơn, đó là câu trả lời đầu tiên của tôi về SO, vì vậy tôi rất vui vì nó đã làm việc cho bạn! – Matt
Nếu bạn đang sử dụng 'OleDbCommandBuilder', bạn có thể sử dụng' cmdBuilder.QuotePrefix = "["; 'và' cmdBuilder.QuoteSuffix = "]"; '. –