<asp:DataList ID="DataList1" runat="server"  OnUpdateCommand="DataList1_UpdateCommand" Width ="800px" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" GridLines="Both" >
                <ItemTemplate>   
                <%#DataBinder .Eval (Container.DataItem,"shifou") %><asp:LinkButton ID ="linkbutton2" runat ="server" CommandName ="update">阅读</asp:LinkButton>
                </ItemTemplate>
                <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
                <SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
                <ItemStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
                <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
            </asp:DataList>
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
    {
        string str = "dddd";
        OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("database.mdb"));
        string sql = "update table1 set shifou='" + str  + "' where 编号='" + DataList1.DataKeys[e.Item.ItemIndex].ToString () + "' ";
        conn.Open();
        OleDbCommand cmd = new OleDbCommand(sql, conn);
        cmd.ExecuteNonQuery();
        datebind();
    }
提示的错误是:
我用的是VS2005和AEECSS数据库,不明白为什么出现这样的情况。帮帮忙
数据表中的字段是文本,编号是自动的。?
标准表达式中数据类型不匹配。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配。源错误: 
行 55:         conn.Open();
行 56:         OleDbCommand cmd = new OleDbCommand(sql, conn);
行 57:         cmd.ExecuteNonQuery();行 58:         datebind();
行 59:     }
 

解决方案 »

  1.   

    自动编号
    那就是int类型
    string sql = "update table1 set shifou='" + str  + "' where 编号=" + DataList1.DataKeys[e.Item.ItemIndex].ToString () + ""; 
    把''去掉
      

  2.   

    编号如果是自动的话,它好像是数字类型的
    编号='" + DataList1.DataKeys[e.Item.ItemIndex].ToString () + "' 你添加的是字符类型的
      

  3.   

     string sql = "update table1 set shifou='" + str  + "' where 编号='" + DataList1.DataKeys[e.Item.ItemIndex].ToString () + "' "; 
      

  4.   

    编号='" + DataList1.DataKeys[e.Item.ItemIndex].ToString () + "' "; 不像sql server,类型匹配,改成编号=" + DataList1.DataKeys[e.Item.ItemIndex].ToString (); 
      

  5.   

    shifou 和 编号 字段都是文本类型吗?
      

  6.   

    不是啊,我又重新加载数据了,上面代码的datebind()就是啊,绑定datalist1的/...........