}
public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) 
{
string dq1 = ((TextBox)e.Item.FindControl("edit_dq")).Text;
string sm1 = ((TextBox)e.Item.FindControl("edit_sm")).Text;
string yb1 = ((TextBox)e.Item.FindControl("edit_yb")).Text;
string qh1 = ((TextBox)e.Item.FindControl("edit_qh")).Text;
          OpenDatabase();
String OleDb_edit = "UPDATE YBQH " +
"SET dq = '" + dq1.Replace("'","''")+ "'," +
    "sm = '" + sm1.Replace("'","''")+ "'" +
    "yb = '" + yb1.Replace("'","''")+ "'" +
    "qh = '" + qh1.Replace("'","''")+ "'" +
" WHERE ID = " + MyDataGrid.DataKeys[e.Item.ItemIndex];
OleDbConnection myConnection = cn;
OleDbCommand OleDbCommandUpdate = new OleDbCommand(OleDb_edit,myConnection);
OleDbCommandUpdate.ExecuteNonQuery();
myConnection.Close();
MyDataGrid.EditItemIndex = -1;
BindGrid(); }

解决方案 »

  1.   

    在生成语句后面按F9设断点,取得组成的C# SQL语句,在查询分析器执行,看一下语句能否正确执行
      

  2.   

    String OleDb_edit = "UPDATE YBQH " +
    "SET dq = '" + dq1.Replace("'","''")+ "'," +
        "sm = '" + sm1.Replace("'","''")+ "'" +
        "yb = '" + yb1.Replace("'","''")+ "'" +
        "qh = '" + qh1.Replace("'","''")+ "'" +
    " WHERE ID = " + MyDataGrid.DataKeys[e.Item.ItemIndex];
    改成:
    String OleDb_edit = "UPDATE YBQH SET dq="+dq1.Replace("'","''")+","+"sm="+sm1.Replace("'","''")+","+"yb="+yb1.Replace("'","''")+","+"qh="+qh1.Replace("'","''")+"WHERE ID="+MyDataGrid.DataKeys[e.Item.ItemIndex];
    试试建议楼主用参数
      

  3.   

    改为String OleDb_edit = "UPDATE YBQH SET dq='"+dq1+"',sm='"+sm1+"',yb='"+yb1+"',qh='"+qh1+"' WHERE ID="+MyDataGrid.DataKeys[e.Item.ItemIndex];
    不提示错误,但是数据跟新不了啊
      

  4.   

    string dq1 = ((TextBox)e.Item.FindControl("edit_dq")).Text;
    string sm1 = ((TextBox)e.Item.FindControl("edit_sm")).Text;
    string yb1 = ((TextBox)e.Item.FindControl("edit_yb")).Text;
    string qh1 = ((TextBox)e.Item.FindControl("edit_qh")).Text;
    用Label1.Text=dq1+sm1+yb1+qh1;怎么是没有改动前的数据阿,在线等谢谢了
      

  5.   

    一步一步的试吧,先看dq1,...得到的string对不对...
      

  6.   

    是没有改动的,奇怪了,<asp:TemplateColumn SortExpression="dq" HeaderText="地区">
    <HeaderStyle Wrap="False" Width="40%"></HeaderStyle>
    <ItemTemplate>
    <%# DataBinder.Eval(Container, "DataItem.dq") %>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox id="edit_dq"  runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "dq") %>' >
    </asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
      

  7.   

    请问用参数有什么好处
    -------------------------------------------------------------------------------------
    好处很多,一个是写Sql语句很方便,不会存在引号和字符的问题,还有就是可以有效的防止SQL注入攻击。