.net无法更新ACCESS数据库里的数据 可以添加,删除 代码是生成器生成的SQL 没有问题 但问题是不能更改 请教 StringBuilder strSql = new StringBuilder();
        strSql.Append("update newscontent set ");
        strSql.Append("title=@title,");
        strSql.Append("txtcontent=@txtcontent,");
        strSql.Append("shorttitle=@shorttitle,");
        strSql.Append("subtitle=@subtitle,");
        strSql.Append("author=@author,");
        strSql.Append("txtkeyword=@txtkeyword,");
        strSql.Append("copyfrom=@copyfrom,");
        strSql.Append("ontop=@ontop,");
        strSql.Append("intro=@intro,");
        strSql.Append("elite=@elite,");
        strSql.Append("titlecolor=@titlecolor,");       
        strSql.Append("hits=@hits,");
        strSql.Append("newimg=@newimg,");
        strSql.Append("adddate=@adddate,");
        strSql.Append("addtime=@addtime");
        strSql.Append(" where id=@ID ");
        OleDbParameter[] parameters = {
new OleDbParameter("@ID", OleDbType.Integer,4),
new OleDbParameter("@title", OleDbType.VarChar,255),
new OleDbParameter("@txtcontent", OleDbType.VarWChar),
new OleDbParameter("@shorttitle", OleDbType.VarChar,255),
new OleDbParameter("@subtitle", OleDbType.VarChar,255),
new OleDbParameter("@author", OleDbType.VarChar,255),
new OleDbParameter("@txtkeyword", OleDbType.VarChar,255),
new OleDbParameter("@copyfrom", OleDbType.VarChar,255),
new OleDbParameter("@ontop", OleDbType.Integer,4),
new OleDbParameter("@intro", OleDbType.VarChar,255),
new OleDbParameter("@elite", OleDbType.Integer,4),
new OleDbParameter("@titlecolor", OleDbType.VarChar,255),
                  new OleDbParameter("@hits", OleDbType.Integer,4),
new OleDbParameter("@newimg", OleDbType.VarChar,255),
new OleDbParameter("@adddate", OleDbType.VarChar,255),
new OleDbParameter("@addtime", OleDbType.VarChar,255)};
        parameters[0].Value =int.Parse(Request["id"].ToString());
        parameters[1].Value = Request["tb_title"].ToString();
        parameters[2].Value = tb_content.Text;
        parameters[3].Value = Request["tb_shorttitle"].ToString();
        parameters[4].Value = Request["tb_subtitle"].ToString();
        parameters[5].Value = Request["tb_writer"].ToString();
        parameters[6].Value = Request["tb_keyword"].ToString();
        parameters[7].Value = Request["tb_from"].ToString();        if (cb_ontop.Checked == true)
        {
            parameters[8].Value = 1;
        }
        else
        {
            parameters[8].Value = 0;
        }
        parameters[9].Value = Request["tb_intro"].ToString();
        if (cb_elite.Checked == true)
        {
            parameters[10].Value = 1;
        }
        else
        {
            parameters[10].Value = 0;
        }
        parameters[11].Value = Request["tb_color"].ToString();
        parameters[12].Value = int.Parse(Request["tb_hits"].ToString());
        parameters[13].Value = Request["tb_picpath"].ToString();        string[] time = Request["tb_time"].ToString().Split(" ".ToCharArray());
        parameters[14].Value = time[0];
        parameters[15].Value = time[1];

解决方案 »

  1.   

    可能是Sql语句问题,注意Access关键字的部分。时间貌似要用#"date"#
      

  2.   

    跟踪一下,把C#生成的SQL语句复制下来直接用客户端软件执行,看看是哪里出的问题。ACCESS,不太好办啊,MS没这功能……
      

  3.   

    OleDbParameter参数的的定义顺序必须和查询语句中参数出现的顺序一致,你检查下,太多,眼花就不帮看了,目前只看到new OleDbParameter("@ID", OleDbType.Integer,4),没有对应。
      

  4.   

    我也遇到过,1中是你 字段用到了关键字,用[]括起来,一种是你SQL语句写错,调试看看,有没有执行完。
      

  5.   

    貌似也没匹配好,new 出 很多字段来,下面怎么就8和个
      

  6.   

    ying gai shi..dai ma de shi...
    hao hao kan yi xia...
      

  7.   

    new OleDbParameter("@adddate", OleDbType.VarChar,255)
    你这个adddate在ACCESS是什么类型的,难道也是字符串类型,如果是日期型,你就改成datetime吧
    第二个,ACCESS不是根据参数名称来匹配的,而是根据参数的顺序来匹配的
    例如
    insert into taba (field1,field2) values (@field1,@field2)
    那么你必须先添加@field1参数,然后添加@field2参数
    参数名称对于ACCESS数据库没有任何作用
    该条语句我正常这样写
    insert into taba (field1,field2) values (?,?)
      

  8.   

    最好能把你的update语句贴出来
      

  9.   

    你确认你的删除指定记录操作没有问题??应该也有问题。oledb的参数不是这样传的:sql语句里面用到参数的地方应该使用"?"而不是“@参数名”
    然后按照?的精确次序传入各个参数。参数名没有意义的。