一直用的是SQL 数据库,突然改用Access了,使用起来就是没有SQL 顺畅,老是出来些意想不到的错误。今天用Access做的网站程序进行添加数据,调试了一下午,总是异常……

提示ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误,刚才才在网络上找到了解决的方法,觉得有点不可思议~~在网络上看了看,也是学习ADO.net的人常犯的错误。所以写此日志,以提醒自己

    /// <summary>
/// 增加一条数据
/// </summary>
public int Add(Model.article_comment model)
{
int newId;
using (OleDbConnection conn = new OleDbConnection(DbHelperOleDb.connectionString))
{
conn.Open();
using (OleDbTransaction trans = conn.BeginTransaction())
{
try
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into " + databaseprefix + "article_comment(");
strSql.Append("channel_id,article_id,parent_id,user_id,user_name,user_ip,content,is_lock,add_time,is_reply,reply_content,reply_time,tel,zhengjian,zhengjianNum,workadd,address,youzhengbm,email,type,title,purpose,describe,newsway,getway)");
strSql.Append(" values (");
strSql.Append("@channel_id,@article_id,@parent_id,@user_id,@user_name,@user_ip,@content,@is_lock,@add_time,@is_reply,@reply_content,@reply_time,@tel,@zhengjian,@zhengjianNum,@workadd,@address,@youzhengbm,@email,@type,@title,@purpose,@describe,@newsway,@getway)"); OleDbParameter[] parameters = {
new OleDbParameter("@channel_id", OleDbType.Integer,),
new OleDbParameter("@article_id", OleDbType.Integer,),
new OleDbParameter("@parent_id", OleDbType.Integer,),
new OleDbParameter("@user_id", OleDbType.Integer,), new OleDbParameter("@user_name", OleDbType.VarChar,),
new OleDbParameter("@user_ip", OleDbType.VarChar,),
new OleDbParameter("@content", OleDbType.VarChar),
new OleDbParameter("@is_lock", OleDbType.Integer,), new OleDbParameter("@add_time", OleDbType.Date),
new OleDbParameter("@is_reply", OleDbType.Integer,),
new OleDbParameter("@reply_content", OleDbType.VarChar),
new OleDbParameter("@reply_time", OleDbType.Date), new OleDbParameter("@tel", OleDbType.VarChar,),
new OleDbParameter("@zhengjian", OleDbType.VarChar,),
new OleDbParameter("@zhengjianNum", OleDbType.VarChar,),
new OleDbParameter("@workadd", OleDbType.VarChar,), new OleDbParameter("@address", OleDbType.VarChar,),
new OleDbParameter("@youzhengbm", OleDbType.VarChar,),
new OleDbParameter("@email", OleDbType.VarChar,),
new OleDbParameter("@type", OleDbType.VarChar,), new OleDbParameter("@title", OleDbType.VarChar,),
new OleDbParameter("@purpose", OleDbType.VarChar,),
new OleDbParameter("@describe", OleDbType.VarChar,),
new OleDbParameter("@newsway", OleDbType.VarChar,),
new OleDbParameter("@getway", OleDbType.VarChar,)};
parameters[].Value = model.channel_id;
parameters[].Value = model.article_id;
parameters[].Value = model.parent_id;
parameters[].Value = model.user_id;
parameters[].Value = model.user_name;
parameters[].Value = model.user_ip;
parameters[].Value = model.content;
parameters[].Value = model.is_lock;
parameters[].Value = model.add_time;
parameters[].Value = model.is_reply;
parameters[].Value = model.reply_content;
parameters[].Value = model.reply_time;
parameters[].Value = model.tel;
parameters[].Value = model.zhengjian;
parameters[].Value = model.zhengjianNum;
parameters[].Value = model.workadd;
parameters[].Value = model.address;
parameters[].Value = model.youzhengbm;
parameters[].Value = model.email;
parameters[].Value = model.type;
parameters[].Value = model.title;
parameters[].Value = model.purpose;
parameters[].Value = model.describe;
parameters[].Value = model.newsway;
parameters[].Value = model.getway ;
DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
//取得新插入的ID
newId = GetMaxId(conn, trans);
trans.Commit();
}
catch
{
trans.Rollback();
return -;
}
}
}
return newId;
}

修改后的代码如下:

    /// <summary>
/// 增加一条数据
/// </summary>
public int Add(Model.article_comment model)
{
int newId;
using (OleDbConnection conn = new OleDbConnection(DbHelperOleDb.connectionString))
{
conn.Open();
using (OleDbTransaction trans = conn.BeginTransaction())
{
try
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into " + databaseprefix + "article_comment(");
strSql.Append("[channel_id],[article_id],[parent_id],[user_id],[user_name],[user_ip],[content],[is_lock],[add_time],[is_reply],[reply_content],[reply_time],[tel],[zhengjian],[zhengjianNum],[workadd],[address],[youzhengbm],[email],[type],[title],[purpose],[describe],[newsway],[getway])");
strSql.Append(" values (");
strSql.Append("@channel_id,@article_id,@parent_id,@user_id,@user_name,@user_ip,@content,@is_lock,@add_time,@is_reply,@reply_content,@reply_time,@tel,@zhengjian,@zhengjianNum,@workadd,@address,@youzhengbm,@email,@type,@title,@purpose,@describe,@newsway,@getway)"); OleDbParameter[] parameters = {
new OleDbParameter("@channel_id", OleDbType.Integer,),
new OleDbParameter("@article_id", OleDbType.Integer,),
new OleDbParameter("@parent_id", OleDbType.Integer,),
new OleDbParameter("@user_id", OleDbType.Integer,), new OleDbParameter("@user_name", OleDbType.VarChar,),
new OleDbParameter("@user_ip", OleDbType.VarChar,),
new OleDbParameter("@content", OleDbType.VarChar),
new OleDbParameter("@is_lock", OleDbType.Integer,), new OleDbParameter("@add_time", OleDbType.Date),
new OleDbParameter("@is_reply", OleDbType.Integer,),
new OleDbParameter("@reply_content", OleDbType.VarChar),
new OleDbParameter("@reply_time", OleDbType.Date), new OleDbParameter("@tel", OleDbType.VarChar,),
new OleDbParameter("@zhengjian", OleDbType.VarChar,),
new OleDbParameter("@zhengjianNum", OleDbType.VarChar,),
new OleDbParameter("@workadd", OleDbType.VarChar,), new OleDbParameter("@address", OleDbType.VarChar,),
new OleDbParameter("@youzhengbm", OleDbType.VarChar,),
new OleDbParameter("@email", OleDbType.VarChar,),
new OleDbParameter("@type", OleDbType.VarChar,), new OleDbParameter("@title", OleDbType.VarChar,),
new OleDbParameter("@purpose", OleDbType.VarChar,),
new OleDbParameter("@describe", OleDbType.VarChar,),
new OleDbParameter("@newsway", OleDbType.VarChar,),
new OleDbParameter("@getway", OleDbType.VarChar,)};
parameters[].Value = model.channel_id;
parameters[].Value = model.article_id;
parameters[].Value = model.parent_id;
parameters[].Value = model.user_id;
parameters[].Value = model.user_name;
parameters[].Value = model.user_ip;
parameters[].Value = model.content;
parameters[].Value = model.is_lock;
parameters[].Value = model.add_time;
parameters[].Value = model.is_reply;
parameters[].Value = model.reply_content;
parameters[].Value = model.reply_time;
parameters[].Value = model.tel;
parameters[].Value = model.zhengjian;
parameters[].Value = model.zhengjianNum;
parameters[].Value = model.workadd;
parameters[].Value = model.address;
parameters[].Value = model.youzhengbm;
parameters[].Value = model.email;
parameters[].Value = model.type;
parameters[].Value = model.title;
parameters[].Value = model.purpose;
parameters[].Value = model.describe;
parameters[].Value = model.newsway;
parameters[].Value = model.getway ;
DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
//取得新插入的ID
newId = GetMaxId(conn, trans);
trans.Commit();
}
catch
{
trans.Rollback();
return -;
}
}
}
return newId;
}

总结:在System.Data.oleDb 命名空间下使用SQL语句插入内容要在字段名与表名加“[]”

ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误的更多相关文章

  1. 向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常

    向ACCESS数据库中的表导入EXCEL表,EXCEL表Sheet1中与ACCESS数据库表中的关键字对应的列的值,不能与数据库中表的主键项值重复,不然就会出现 在 System.Data.OleDb ...

  2. access数据库频繁读取操作会出现 System.Data.OleDb.OleDbException 的异常解决

    asp.net access数据库 本来想着打开一个access数据库连接后,不关闭,下次操作数据了,直接拿来用,谁知道连着测试64次后(大概这么多次),就会出现System.Data.OleDb.O ...

  3. System.Data.OleDb.OleDbException: 未指定的错误的解决方法

    异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误 这个错误是access数据库特有的错误,当access频繁读取或操作过多的时候就会发生这个错误,微软官 ...

  4. 关于“System.Data.OleDb.OleDbException,外部数据库驱动程序 (1) 中的意外错误。”的解决方案

    网站之前运行一直很正常,但有一次用户在导入格式为xls的excel文件,发生了错误,跟踪错误后抛出如下的异常: 错误提示: 未处理System.Data.OleDb.OleDbException HR ...

  5. [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。

    遇到的情景: sta.executeUpdate("insert into 表1(longitude,latitude,time) values("+a[0]+",&qu ...

  6. 操作ACCESS数据库,报INSERT INTO 语句的语法错误

    错误类型:Microsoft JET Database Engine (0x80040E14)INSERT INTO 语句的语法错误. 有时候非常郁闷,明明看起来自己的语句没错,为什么还是报错呢?其实 ...

  7. INSERT INTO 语句的语法错误【 OLE报错,office终端执行SQL没有问题】

    表名,字段在代码执行之前一定要进行" [ 字段.表名 ] "中括号包裹,不然会报INSERT INTO 语句的语法错误! office终端没有报错的原因,应该是office在执行之 ...

  8. Insert Into 语句的语法错误

    错误示意: 一开始程序是: 改正: 一条很简单的插入语句竟然会报错,然而直接在数据库的查询中执行中却没有问题,这个问题困扰了不少时间. 数据库使用的是ACCESS,INSERT INTO语句为inse ...

  9. 问题.NETSystem.Data.OleDb.OleDbException 操作必须使用一个可更新的查询

    问题:System.Data.OleDb.OleDbException 操作必须使用一个可更新的查询 问题现象:用asp.net连access数据库,查询可以,插入数据报错.在.NET中F5可以使用方 ...

随机推荐

  1. cdoj 1143 传输数据 最大流

    传输数据 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1143 Descri ...

  2. OSG中找到特定节点的方法(转)

    OSG中找到特定节点的方法 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"] 阐述 ...

  3. GLSL实现Image Filter 【转】

    http://blog.csdn.net/a3070173/archive/2008/11/27/3390477.aspx 图像过滤无论是在作图工具还是特效的实现上都时有运用,这里发一些通常会使用到的 ...

  4. Java中类的初始化顺序

    一.一个类的初始化顺序(没继承情况)  规则: 1.静态变量>普通变量>构造方法   2.变量定义的顺序决定初始化的顺序 3.静态变量和静态块是一样的,普通变量和非静态块是一样的,即能够把 ...

  5. C++ Code_ImageList

    主题 1.  创建图像列表 2.  使用图像列表绘图 3. 4. 5.     代码::创建图像列表 双击 Cproject03Dlg在     下面添加 1 句 ////////////////// ...

  6. 【转】SoapUI5.0创建WebService接口模拟服务端

    原文:http://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要接口描述文件 MathU ...

  7. NPOI 教程 - 3.2 打印相关设置

    转:http://www.cnblogs.com/wolfplan/archive/2013/01/13/2858991.html NPOI 教程 - 3.2 打印相关设置   打印设置主要包括方向设 ...

  8. Cocos2dx 3.0 过渡篇(二十九)globalZOrder()与localZOrder()

    前天非常难得的加班到八点...为什么说难得呢?由于平时我差点儿就没加班过.六点下班后想走就走,想留就留.率直洒脱.不拘一格.尽显男儿本色.程序猿,就是这么自信! -----------这篇博客的标题本 ...

  9. [原创]SQL SERVER 2008R2 技术总结专题目录索引

    前言:      在工作中使用了SQL SERVER 2008R2已经很长一段时间了,工作中自己也有个蛮好的习惯:总是喜欢将碰到的一些问题.技术方案等记录下来,现在越积越多,最近也比较轻松了,准备整理 ...

  10. C# 之 反射

    一.反射的定义: 审查元数据并收集关於它的类型信息的能力,元数据(编辑后的基本数据单元)就是一大堆表,编译器会创建一个类定义表,一个字段定义表,一个方法定义表等, System.Reflection ...