当前位置: 首页 > 编程语言 > C#

使用OleDbCommandBuilder时访问SQL语法错误分享

时间:2023-04-10 14:24:51 C#

使用OleDbCommandBuilder时访问SQL语法错误我将在C#中使用OleDbDataAdapter向Access数据库中插入数据,但在INSERTINTO命令中出现错误消息语法错误BackgroundWorkerworker=新的BackgroundWorker();OleDbDataAdapterdbAdapternewOleDbDataAdapter();OleDbConnectiondbConnection=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E:\PMS.mdb");worker=newBackgroundWorker();工人.WorkerReportsProgress=true;worker.DoWork+=InsertJob;worker.ProgressChanged+=InsertJobCompleted;worker.RunWorkerAsync(args);InsertJob函数是:privatevoidInsertJob(objectsender,DoWorkEventArgse){varargs=(InsertJobArgs)e。争论;尝试{dbAdapter.SelectCommand=newOleDbCommand("SELECT*FROMSheet",dbConnection);dbAdapter.Fill(args.DataTable);varbuilder=newOleDbCommandBuilder(dbAdapter);varrow=args.DataTable.NewRow();row["UserName"]=args.Entry.UserName;行[“密码”]=args.Entry.Password;args.DataTable.Rows.Add(行);数据库适配器ter.InsertCommand=builder.GetInsertCommand();dbAdapter.Update(args.DataTable);建设者。处置();}catch(Exceptionex){args.Exception=ex;worker.ReportProgress(0,args);返回;}worker.ReportProgress(100,args);我在网上收到错误:dbAdapter.Update(args.DataTable);我尝试使用visualstudio对其进行调试,发现在调用dbAdapter.Update(args.DataTable)时所有InsertCommand参数值为null;之前,我尝试通过这段代码手动插入它dbAdapter.Update(args.DataTable);dbAdapter.InsertCommand.Parameters[0].Value=args.Entry.UserName;dbAdapter.InsertCommand.Parameters[1].Value=args.Entry.Password;试试这个:紧接在行varbuilder=newOleDbCommandBuilder(dbAdapter);之后添加两行builder.QuotePrefix="[";builder.QuoteSuffix="]";这将告诉OleDbCommandBuilder将表名和列名转换为包裹在方括号中,生成一个INSERT命令INSERTINTO[TableName]...而不是默认形式INSERTINTOTableName...如果任何表名或列名包含空格或“funny"字符,或者它们恰好在AccessSQL保留字中,则必须使用方括号(在你的情况下,我怀疑你的表有一个名为[Password]的列,而PASSWORD是AccessSQL中的保留字。)以上是C#学习教程:使用OleDbCommandBuilder访问SQL语法错误共享的所有内容时。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: