阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

    教程列表

    数据库
    抓包专区
    测试专区

    ADO 更新记录

    ADO 更新记录

    我们可使用 SQL 的 UPDATE 来更新数据库表中的某条记录。

    更新数据库表中的记录

    我们希望更新 Northwind 数据中 Customers 表的某条记录。首先我们需要创建一个表格,来列出 Customers 中的所有记录。

    <html>
    <body>
    <%
    set conn=Server.CreateObject("ADODB.Connection")
    conn.Provider="Microsoft.Jet.OLEDB.4.0"
    conn.Open "c:/webdata/northwind.mdb"
    set rs=Server.CreateObject("ADODB.Recordset")
    rs.open "SELECT * FROM customers",conn
    %>
    
    <h2>List Database</h2>
    <table border="1" width="100%">
    <tr>
    <%
    for each x in rs.Fields
      response.write("<th>" & ucase(x.name) & "</th>")
    next
    %>
    </tr>
    <% do until rs.EOF %>
    <tr>
    <form method="post" action="demo_update.asp">
    <%
    for each x in rs.Fields
      if lcase(x.name)="customerid" then%>
        <td>
        <input type="submit" name="customerID" value="<%=x.value%>">
        </td>
      <%else%>
        <td><%Response.Write(x.value)%></td>
      <%end if
    next
    %>
    </form>
    <%rs.MoveNext%>
    </tr>
    <%
    loop
    conn.close
    %>
    </table>
    
    </body>
    </html>
    

    如果用户点击 “customerID” 列中的按钮,会打开一个新文件 “demo_update.asp”。此文件包含了创建输入域的源代码,这些输入域基于数据库中记录的字段,同时也含有一个保存修改的"更新按钮":

    <html>
    <body>
    
    <h2>Update Record</h2>
    <%
    set conn=Server.CreateObject("ADODB.Connection")
    conn.Provider="Microsoft.Jet.OLEDB.4.0"
    conn.Open "c:/webdata/northwind.mdb"
    
    cid=Request.Form("customerID")
    
    if Request.form("companyname")="" then
      set rs=Server.CreateObject("ADODB.Recordset")
      rs.open "SELECT * FROM customers WHERE customerID='" & cid & "'",conn
      %>
      <form method="post" action="demo_update.asp">
      <table>
      <%for each x in rs.Fields%>
      <tr>
      <td><%=x.name%></td>
      <td><input name="<%=x.name%>" value="<%=x.value%>"></td>
      <%next%>
      </tr>
      </table>
      <br /><br />
      <input type="submit" value="Update record">
      </form>
    <%
    else
      sql="UPDATE customers SET "
      sql=sql & "companyname='" & Request.Form("companyname") & "',"
      sql=sql & "contactname='" & Request.Form("contactname") & "',"
      sql=sql & "address='" & Request.Form("address") & "',"
      sql=sql & "city='" & Request.Form("city") & "',"
      sql=sql & "postalcode='" & Request.Form("postalcode") & "',"
      sql=sql & "country='" & Request.Form("country") & "'"
      sql=sql & " WHERE customerID='" & cid & "'"
      on error resume next
      conn.Execute sql
      if err<>0 then
        response.write("No update permissions!")
      else
        response.write("Record " & cid & " was updated!")
      end if
    end if
    conn.close
    %>
    
    </body>
    </html>
    

    处理“修改”的单击事件,根据编辑框中的数据修改数据库中的数据

    代码如下

    void CUseAdoDlg::OnButmod()
    {
        UpdateData(TRUE);
        if(m_ID.IsEmpty() || m_Name.IsEmpty() || m_Culture.IsEmpty()) //数据不能为空
        {
            MessageBox("基础信息不能为空!");     //为空时弹出提示信息
            return;
        }
        int pos   = m_Grid.GetSelectionMark();      //获得当前选中列表项索引
        ADO m_Ado;           //声明ADO类对象
        m_Ado.OnInitADOConn();         //连接数据库
        CString sql = "select * from employees";      //设置查询字符串
        m_Ado.m_pRecordset = m_Ado.OpenRecordset(sql);   //打开记录集
    
        try
        {
            m_Ado.m_pRecordset->Move((long)pos,vtMissing);   //将记录集指针移动到选中的记录
            //设置选中记录的文本
            m_Ado.m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
            m_Ado.m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
            m_Ado.m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);
            m_Ado.m_pRecordset->Update();      //更新记录集
            m_Ado.CloseRecordset();        //关闭记录集
            m_Ado.CloseConn();          //断开数据库连接
        }
        catch(...)             //捕捉可能出现的错误
        {
            MessageBox("操作失败");        //弹出错误提示
            return;
        }
        MessageBox("添加成功");         //提示操作成功
        m_Grid.DeleteAllItems();          //删除列表控件
        AddToGrid();            //向列表中插入数据
    }
    

    提示:在 catch 语句部分我们使用了“…”表示捕捉所有错误,也就是说在 try 语句部分产生任何错误,都会进入 catch 语句块部分进行处理。

    卖前端学习教程

    只需几十元,就能买到培训班的内部教程!开启高薪之路!

    零基础小白阿里P7的教程都有!

    同时长期收购所有培训班的前端教程

    目录
    目录