当前位置:编程学习 > C#/ASP.NET >>

access数据库的语法问题

我现在写了一个access的查询语句,
 //修改资料
        public static int UpdateById(News ne)
        {
            string sql = "update News set Title='" + ne.Title + "',entitle='" + ne.Entitle + "',encontent='" + ne.Encontent + "',jptitle='" + ne.Jptitle + "',jpcontent='" + ne.Jpcontent + "',Content='" + ne.Content + "',BigClassName='" + ne.BigClassName + "',SmallClassName='" + ne.SmallClassName + "',User='" + ne.User + "',Infotime='"+ne.Infotime+"'  where id=" + ne.ID + " ";
            
            return DBHelper.ExecuteCommand(sql);
        }

我进行调试,把生成的sql语句写进数据库中运行没问题,可是在代码中运行到 return DBHelper.ExecuteCommand(sql);按F11进度DBheper中,运行 public static int ExecuteCommand(string safeSql)
        {

            OleDbConnection conn = new OleDbConnection(connectionString);
            OleDbCommand cmd = new OleDbCommand();

            try
            {
                PrepareCommand(cmd, conn, CommandType.Text, safeSql, null);
                int result = cmd.ExecuteNonQuery();
                return result;
            }
            catch (Exception e)
            {
                return 0;
            }
            finally
            {
                cmd.Dispose();
                conn.Close();
                conn.Dispose();
            }
        }
当运行到int result = cmd.ExecuteNonQuery();后,直接跳到 catch (Exception e)中就提示说update语法错误,这是怎么回事啊?? --------------------编程问答-------------------- 看着乱,肯定是语句有问题,你把sql显示出来,仔细看看,或者放到access查询中看看 --------------------编程问答-------------------- 我放到access上执行没问题啊
要是认为高手可以加我QQ82626948,谢谢,远程调试一下啊 --------------------编程问答-------------------- string sql = "update News set Title='" + ne.Title + "',entitle='" + ne.Entitle + "',encontent='" + ne.Encontent + "',jptitle='" + ne.Jptitle + "',jpcontent='" + ne.Jpcontent + "',Content='" + ne.Content + "',BigClassName='" + ne.BigClassName + "',SmallClassName='" + ne.SmallClassName + "',User='" + ne.User + "',Infotime='"+ne.Infotime+"'  where id=" + ne.ID + " ";

这最后的 where id=" + ne.ID + " ";  加个空格做什么了? --------------------编程问答-------------------- 那个空格不碍事,我删掉也一样啊
--------------------编程问答-------------------- DBHelper.ExecuteCommand(sql);那这个方法 有没有问题了? --------------------编程问答-------------------- Infotime='"+ne.Infotime+"' 这个是时间吗?如果是要写成Infotime=#"+ne.Infotime+"#  --------------------编程问答-------------------- 这个时间格式的,去去掉这个字段也会报那个错误啊
--------------------编程问答-------------------- 应该是保留字的问题,你把User,改成[User]
--------------------编程问答-------------------- 我试试啊,不清除啊 --------------------编程问答-------------------- Infotime='"+ne.Infotime+"'

这个是日期?

日期用"#"
Infotime=#"+ne.Infotime+"# --------------------编程问答-------------------- 用参数的形式来执行吧。

 StringBuilder strSql = new StringBuilder();
            strSql.Append("update Types set ");
            strSql.Append("IsOutput=@IsOutput,");
            strSql.Append("SortValue=@SortValue,");
            strSql.Append("TypeName=@TypeName");
            strSql.Append(" where TypeID=@TypeID ");
            OleDbParameter[] parameters = {
new OleDbParameter("@IsOutput", OleDbType.Boolean,2),
new OleDbParameter("@SortValue", OleDbType.Integer,4),
new OleDbParameter("@TypeName", OleDbType.VarChar,250),
                new OleDbParameter("@TypeID", OleDbType.Integer,4)};
            parameters[0].Value = model.IsOutput;
            parameters[1].Value = model.SortValue;
            parameters[2].Value = model.TypeName;
            parameters[3].Value = model.TypeID;
return DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters) > 0; --------------------编程问答-------------------- 加我好友把,我的QQ82626948,谁帮我远程一下啊,这个问题纠结了好久了啊,帮我看一下我到底哪里错了啊
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,