阿西河

所有教程

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

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      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的教程都有!

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

      目录
      目录