欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      ADO編程總結(jié)(一)

      時(shí)間:2019-05-12 03:57:19下載本文作者:會(huì)員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《ADO編程總結(jié)(一)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《ADO編程總結(jié)(一)》。

      第一篇:ADO編程總結(jié)(一)

      ADO編程總結(jié)

      (一)1、在stdafx.h中添加代碼:

      #import “C:Program FilesCommon FilesSystemadomsado15.dll” no_namespace rename(“EOF”,“rsEOF”)

      2、在APP.cpp的InitInstance中加入: ::CoInitialize(NULL);在ExitInstance()中加入:

      ::CoUninitialize();

      3、工程目錄下用記事本新建一文件,另存為擴(kuò)展名為.udl的文件,如這里保存為mydata.udl,雙擊出現(xiàn)數(shù)據(jù)鏈接屬性對(duì)話框,參考下圖進(jìn)行設(shè)置,確定。

      4、定義以下變量:

      _ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;

      5、初始化連接函數(shù)

      BOOL CADOTestDlg::InitConnection(){ HRESULT hr;try

      {

      ①hr=m_pConnection.CreateInstance(_uuidof(Connection));

      if(SUCCEEDED(hr))

      {

      ②m_pConnection->ConnectionString=“File Name=mydata.udl”;

      m_pConnection->ConnectionTimeout=20;

      hr=m_pConnection->Open(“",”“,”“,adConnectUnspecified);

      if(FAILED(hr))

      {

      AfxMessageBox(_T(”打開連接失敗“));

      return FALSE;

      }

      }

      else

      {

      AfxMessageBox(_T(”實(shí)例化連接失敗“));

      return FALSE;

      }

      return TRUE;} catch(_com_error e){

      _bstr_t bstrSource(e.Source());

      _bstr_t bstrDescription(e.Description());

      AfxMessageBox(bstrSource+bstrDescription);

      return FALSE;} } 對(duì)以上程序主要結(jié)果是一個(gè)try catch語句,其中 ①hr=m_pConnection.CreateInstance(_uuidof(Connection));實(shí)例化連接對(duì)象,固定格式 ②m_pConnection->ConnectionString=”File Name=mydata.udl“;設(shè)置連接串屬性為UDL文件

      m_pConnection->ConnectionTimeout=20;連接等待時(shí)間為20秒

      hr=m_pConnection->Open(”“,”“,”“,adConnectUnspecified);使用Connection對(duì)象打開連接,其中adConnectUnspecified表示同步模式,若為adAsyncConnect表示異步模式。

      該函數(shù)是比較固定,可以在以后的應(yīng)用中復(fù)制經(jīng)少量修改即可應(yīng)用。

      6、查詢數(shù)據(jù)庫表中的信息并輸出:

      void CADOTestDlg::OnBnClickedBtnShowAll(){ HRESULT hr;①_RecordsetPtr pShowAllRecordset;hr=pShowAllRecordset.CreateInstance(_uuidof(Recordset));if(FAILED(hr)){

      AfxMessageBox(_T(”Create Instance of Recordset failed!“));return;} CString strSql;_variant_t var;CString strValue;int curItem=0;strSql=_T(”select * from emp“);try { ②hr=pShowAllRecordset->Open(_variant_t(strSql),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);if(SUCCEEDED(hr)){

      ③while(!pShowAllRecordset->rsEOF)

      {

      curItem=m_DataList.GetItemCount();

      ④var=pShowAllRecordset->GetCollect(_T(”EMPNO“));

      if(var.vt!=VT_NULL)

      strValue=(LPCSTR)_bstr_t(var);

      m_DataList.InsertItem(curItem,strValue);

      var=pShowAllRecordset->GetCollect(_T(”ename“));if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_DataList.SetItemText(curItem,1,strValue);var=pShowAllRecordset->GetCollect(_T(”hiredate“));if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_DataList.SetItemText(curItem,2,strValue);var=pShowAllRecordset->GetCollect(_T(”sal“));if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_DataList.SetItemText(curItem,3,strValue);var=pShowAllRecordset->GetCollect(_T(”comm“));if(var.vt!=VT_NULL)

      strValue=(LPCSTR)_bstr_t(var);

      m_DataList.SetItemText(curItem,4,strValue);

      ⑤pShowAllRecordset->MoveNext();

      }

      } } catch(_com_error* e){

      AfxMessageBox(e->ErrorMessage());

      return;} ⑥pShowAllRecordset->Close();pShowAllRecordset=NULL;} 該函數(shù)也比較固定,通過設(shè)置命令文本字符串,對(duì)數(shù)據(jù)庫進(jìn)行操作,主要有以下幾步 ①_RecordsetPtr pShowAllRecordset;hr=pShowAllRecordset.CreateInstance(_uuidof(Recordset));定義Recordset對(duì)象,并實(shí)例化,格式固定。②hr=pShowAllRecordset->Open(_variant_t(strSql),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);嘗試打開記錄,其中Open函數(shù)參數(shù)意義如下:

      第1個(gè)參數(shù):記錄源,可以是下列內(nèi)容之一:Command對(duì)象變量,SQL語句,存儲(chǔ)過程,表名或完整的路徑名,這里是命令文本,一般也是用命令文本。

      第2個(gè)參數(shù):指定在哪個(gè)連接中打開記錄集。m_pConnection.GetInterfacePtr():Returns the encapsulated interface pointer,返回封閉接口指針,不懂。

      第3、4個(gè)參數(shù):詳細(xì)說明見《Visual C++6.0 開發(fā)指南》714,715頁,不懂。第5個(gè)參數(shù):表示第1個(gè)參數(shù)的各類,這里是adCmdText,表示命令文本,其它取值見《Visual C++6.0 開發(fā)指南》715頁。③while(!pShowAllRecordset->rsEOF)循環(huán)。

      當(dāng)記錄未到末尾時(shí),執(zhí)行循環(huán),這里有可能會(huì)報(bào)錯(cuò):

      : “rsEOF”: 不是“_Recordset”的成員

      請(qǐng)確認(rèn)在stdafx.h中添加了以下代碼:rename(”EOF“,”rsEOF“)var=pShowAllRecordset->GetCollect(_T(”EMPNO“));

      if(var.vt!=VT_NULL)

      strValue=(LPCSTR)_bstr_t(var);

      m_DataList.InsertItem(curItem,strValue);④var=pShowAllRecordset->GetCollect(_T(”EMPNO“));

      if(var.vt!=VT_NULL)

      strValue=(LPCSTR)_bstr_t(var);

      m_DataList.InsertItem(curItem,strValue);比較固定的結(jié)構(gòu),從記錄中讀取列名為”EMPNO"的數(shù)據(jù),保存到var結(jié)構(gòu)中,再轉(zhuǎn)換到CString對(duì)象。

      數(shù)據(jù)類型的轉(zhuǎn)換:

      COM中的VARIANT、BSTR兩種數(shù)據(jù)類型與C++中CStrng類型的轉(zhuǎn)換分別通過兩個(gè)類來實(shí)現(xiàn): _variant_t 和_bstr_t。⑤pShowAllRecordset->MoveNext();記錄指針向前移動(dòng)。⑥pShowAllRecordset->Close();pShowAllRecordset=NULL;關(guān)閉記錄對(duì)象。

      第二篇:ADO編程總結(jié)(二)(寫寫幫整理)

      ADO編程總結(jié)

      (二)Connection,Recordset,Command對(duì)象都可以對(duì)數(shù)據(jù)庫進(jìn)行訪問,并對(duì)數(shù)據(jù)庫進(jìn)行操作,以下是實(shí)驗(yàn)例程,由以下例程可見,讀取數(shù)據(jù)庫都要用到Recordset對(duì)象,而Recordset和command雖然都可以不需要connection對(duì)象而獨(dú)自對(duì)數(shù)據(jù)庫訪問(例程在此為給出,可查我在《Visual c++6.0開發(fā)指南》上所夾的打印資料),但最方便的方法還是先用connection對(duì)象建立對(duì)數(shù)據(jù)庫的連接,然后以此conection對(duì)象作為Recordset和command的open參數(shù),打開數(shù)據(jù)庫。

      使用ConnectionPtr接口訪數(shù)據(jù)庫,并添加數(shù)據(jù)

      1、創(chuàng)建_ConnetionPtr對(duì)象并實(shí)例化

      2、調(diào)用Open方法訪數(shù)據(jù)庫

      3、調(diào)用Execute方法,執(zhí)行SQL命令

      4、例程如下:

      //1 建立連接

      _ConnectionPtr pCon;

      HRESULT hr;

      try

      {

      hr=pCon.CreateInstance(_uuidof(Connection));

      if(FAILED(hr))

      {

      AfxMessageBox(“Create Connection Instance Failed!”);

      return;

      }

      pCon->ConnectionString=“File Name=mydata.udl”;

      pCon->ConnectionTimeout=20;

      hr=pCon->Open(“",”“,”“,adConnectUnspecified);

      if(FAILED(hr))

      {

      AfxMessageBox(”O(jiān)pen Connection Failed!“);

      return;

      }

      //2 利用Connection對(duì)象,為數(shù)據(jù)庫添加數(shù)據(jù)CString strSQL=”insert into DVDData values(1006,'新聞聯(lián)播','2010-2-12',3)“;COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);pRecordset=pCon->Execute(_bstr_t(strSQL),&vtOptional,-1);pCon.Release();} catch(_com_error e){bstr_t bstrSource(e.Source());_bstr_t bstrDescription(e.Description());

      } return;

      使用RecordsetPtr接口訪問數(shù)據(jù)庫

      1、創(chuàng)建_RecordsetPtr對(duì)象并實(shí)例化

      2、調(diào)用Open方法訪問數(shù)據(jù)庫,數(shù)據(jù)源來自已建立連接的Connetcion對(duì)象

      3、調(diào)用GetCollect方法獲取數(shù)據(jù)庫中的數(shù)據(jù)

      4、例程如下:

      _ConnectionPtr pCon;

      _RecordsetPtr pRecordset;

      HRESULT hr;

      try

      {

      hr=pCon.CreateInstance(_uuidof(Connection));

      if(FAILED(hr))

      {

      AfxMessageBox(”Create Connection Instance Failed!“);

      return;

      }

      pCon->ConnectionString=”File Name=mydata.udl“;

      pCon->ConnectionTimeout=20;

      hr=pCon->Open(”“,”“,”“,adConnectUnspecified);

      if(FAILED(hr))

      {

      AfxMessageBox(”O(jiān)pen Connection Failed!“);

      return;

      }

      //2 利用Recordset對(duì)象,讀取數(shù)據(jù)庫數(shù)據(jù)

      hr=pRecordset.CreateInstance(_uuidof(Recordset));

      if(FAILED(hr))

      {

      AfxMessageBox(”Create Recordset Instance Failed!“);

      return;

      }

      CString strSQL=”select * from DVDData“;

      hr=pRecordset->Open(_variant_t(strSQL),pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);if(FAILED(hr))

      {

      AfxMessageBox(”O(jiān)pen Recordset Failed!“);

      return;

      }

      _variant_t var;CString strValue;while(!pRecordset->rsEOF){c=m_datalist.GetItemCount();var=pRecordset->GetCollect(”編號(hào)“);if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_datalist.InsertItem(c,strValue);var=pRecordset->GetCollect(”名稱“);if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_datalist.SetItemText(c,1,strValue);

      var=pRecordset->GetCollect(”日期“);

      if(var.vt!=VT_NULL)

      strValue=(LPCSTR)_bstr_t(var);

      m_datalist.SetItemText(c,2,strValue);

      var=pRecordset->GetCollect(”數(shù)目“);

      if(var.vt!=VT_NULL)

      strValue=(LPCSTR)_bstr_t(var);

      m_datalist.SetItemText(c,3,strValue);

      pRecordset->MoveNext();

      }

      }

      catch(_com_error e)

      {

      bstr_t bstrSource(e.Source());

      _bstr_t bstrDescription(e.Description());

      AfxMessageBox(bstrSource+bstrDescription);

      return;

      }

      pRecordset->Close();

      pRecordset=NULL;

      pCon.Release();

      5、為數(shù)據(jù)庫添加數(shù)據(jù)

      pRecordset->AddNew();

      CString strNum;

      strNum.Format(”%d“,m_number);

      pRecordset->PutCollect(”編號(hào)“,_variant_t(strNum));

      pRecordset->PutCollect(”名稱“,_variant_t(m_name));pRecordset->PutCollect(”日期“,_variant_t(m_date));pRecordset->PutCollect(”數(shù)目“,_variant_t(m_count));pRecordset->Update();

      使用Command對(duì)象打開數(shù)據(jù)庫

      1、定義_CommandPtr、_RecordsetPtr對(duì)象實(shí)例化_CommandPtr對(duì)象

      2、使用Execute方法執(zhí)行SQL命令,返回結(jié)果保存在Recordset對(duì)象中。

      3、使用RecordsetPtr的GetCollect方法獲取數(shù)據(jù)

      4、例程如下:

      _CommandPtr pCommand;

      _RecordsetPtr pRecordset;

      _ConnectionPtr pCon;

      HRESULT hr;

      try

      {

      hr=pCon.CreateInstance(_uuidof(Connection));

      if(FAILED(hr))

      {

      AfxMessageBox(”Create Connection Instance Failed!“);return;

      }

      pCon->ConnectionString=”File Name=mydata.udl“;

      pCon->ConnectionTimeout=20;

      hr=pCon->Open(”“,”“,”“,adConnectUnspecified);

      if(FAILED(hr))

      {

      AfxMessageBox(”O(jiān)pen Connection Failed!“);

      return;

      }

      pCommand.CreateInstance(_uuidof(Command));

      pCommand->ActiveConnection=pCon;

      pCommand->CommandText=”select * from DVDData“;

      pCommand->Parameters->Refresh();

      pRecordset=pCommand->Execute(NULL,NULL,adCmdText);

      int c;

      _variant_t var;

      CString strValue;

      while(!pRecordset->rsEOF)

      {

      c=m_datalist.GetItemCount();

      var=pRecordset->GetCollect(”編號(hào)“);

      }if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_datalist.InsertItem(c,strValue);var=pRecordset->GetCollect(”名稱“);if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_datalist.SetItemText(c,1,strValue);var=pRecordset->GetCollect(”日期“);if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_datalist.SetItemText(c,2,strValue);var=pRecordset->GetCollect(”數(shù)目");if(var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_datalist.SetItemText(c,3,strValue);pRecordset->MoveNext();} } catch(_com_error e){bstr_t bstrSource(e.Source());_bstr_t bstrDescription(e.Description());AfxMessageBox(bstrSource+bstrDescription);return;} pRecordset->Close();pRecordset=NULL;pCon.Release();

      第三篇:ADO編程模型之VB數(shù)據(jù)庫操作小結(jié)

      ADO編程模型之VB數(shù)據(jù)庫操作小結(jié)

      使用ADO編程模型需添加ADO對(duì)象類庫的“引用”----“Microsoft ActiveX Data Objects 2.x Library” ADO之VB數(shù)據(jù)庫操作主要包括讀、寫、修改及刪除等操作,不論是進(jìn)行什么數(shù)據(jù)庫操作都必須首先連接到數(shù)據(jù)庫。

      一、連接到數(shù)據(jù)庫

      1、連接到SQL數(shù)據(jù)庫:

      通過ADO的Connection對(duì)象可實(shí)現(xiàn)VB與SQL數(shù)據(jù)庫的連接。一般方法如下:

      Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象

      cnn.ConnectionString = “Provider=SQLOLEDB.1;Password=密碼;User ID=用戶名;Initial Catalog=SQL數(shù)據(jù)庫文件;Data Source= localhost;”

      '指定提供者,設(shè)置數(shù)據(jù)源 cnn.Open

      ‘打開到數(shù)據(jù)庫的連接 ……..cnn.Close

      ‘關(guān)閉到數(shù)據(jù)庫的連接 或者:

      Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象

      cnn.Open “Provider=SQLOLEDB.1;Password=密碼;User ID=用戶名;Initial Catalog=SQL數(shù)據(jù)庫文件;Data Source= localhost;”

      ‘打開到數(shù)據(jù)庫的連接 ……..cnn.Close

      ‘關(guān)閉到數(shù)據(jù)庫的連接

      2、連接到ACCESS數(shù)據(jù)庫:

      通過ADO的Connection對(duì)象可實(shí)現(xiàn)VB與ACCESS數(shù)據(jù)庫的連接。一般方法如下:

      Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象

      cnn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS數(shù)據(jù)庫文件.MDB” '指定提供者,設(shè)置數(shù)據(jù)源

      cnn.Open

      ‘打開到數(shù)據(jù)庫的連接 ……..cnn.Close

      ‘關(guān)閉到數(shù)據(jù)庫的連接 或者: Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象 cnn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data

      Source=ACCESS

      數(shù)據(jù)庫文件.MDB”

      ‘打開到數(shù)據(jù)庫的連接 ……..cnn.Close

      ‘關(guān)閉到數(shù)據(jù)庫的連接

      二、讀數(shù)據(jù)庫操作

      讀數(shù)據(jù)庫操作一般可通過recordset對(duì)象實(shí)現(xiàn)。方法如下—以ACCESS數(shù)據(jù)庫為例:

      Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象 cnn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data

      Source=ACCESS

      數(shù)據(jù)庫文件.MDB”

      ‘打開到數(shù)據(jù)庫的連接

      Dim rs As New Recordset

      '聲明一個(gè)記錄集對(duì)象

      rs.Open [記錄源, cnn, 游標(biāo)類型, 鎖定類型, 命令類型]

      ‘也可先設(shè)置記錄集相關(guān)屬性

      text1.text= rs(“字段名稱1或索引”)

      ‘假設(shè)讀取出來的字段信息顯示在文本框中,三種讀取方法等價(jià) text2.text=rs.fields(“字段名稱2或索引”)text3.text= rs!字段名稱3 …….rs.close

      ‘關(guān)閉記錄集對(duì)象 cnn.Close

      ‘關(guān)閉與數(shù)據(jù)庫的連接 set rs=Nothing

      ‘釋放rs對(duì)象實(shí)例 set cnn=Nothing ‘釋放Connection對(duì)象實(shí)例

      ? 記錄源一般為一條SQL查詢語句,以實(shí)現(xiàn)查詢目的。

      ? Recordset對(duì)象還保持查詢返回的記錄的位置,它返回第一個(gè)檢索到的記錄,并允許你一次一項(xiàng)逐步掃描其他結(jié)果。Recordset對(duì)象的部分屬性及方法如下 Rs(i): 讀取第i個(gè)字段的數(shù)據(jù),i從0開始 Rs(字段名): 讀取指定字段的數(shù)據(jù) Rs.EOF:記錄指針指到記錄的尾部 Rs.BOF:記錄指針指到記錄的頭部 Rs.RecordCount: 游標(biāo)中的數(shù)據(jù)記錄總數(shù)

      Rs.PageSize:當(dāng)對(duì)象設(shè)有分頁時(shí),用于指定邏輯頁中的記錄個(gè)數(shù) Rs.PageCount:返回記錄集中的邏輯分頁數(shù) Rs.MoveNext: 將記錄指針移到下一個(gè)記錄 Rs.MovePrev: 將記錄指針移到上一個(gè)記錄 Rs.MoveFirst: 將記錄指針移到第一個(gè)記錄 Rs.MoveLast: 將記錄指針移到最后一個(gè)記錄 rs.Delete:將當(dāng)前記錄刪除 rs.addnew:添加一條新記錄(行)

      ? 如果要讀取滿足條件的數(shù)據(jù)庫記錄,只要在SELECT語句中增加WHERE子句即可(例如:WHERE 性別=”男”),如果要讀取多條滿足條件的數(shù)據(jù)庫記錄,可通過循環(huán)語句來實(shí)現(xiàn),并且每讀取一條記錄后使用Rs.MoveNext移動(dòng)記錄指針以讀取下一條記錄。

      三、寫數(shù)據(jù)庫操作

      方法1:使用recordset對(duì)象(此方法一般初學(xué)者使用較多)。方法如下—以ACCESS數(shù)據(jù)庫為例: Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象 cnn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data

      Source=ACCESS

      數(shù)據(jù)庫文件.MDB”

      ‘打開到數(shù)據(jù)庫的連接

      Dim rs As New Recordset

      '聲明一個(gè)記錄集對(duì)象

      rs.Open [記錄源, cnn, 游標(biāo)類型, 鎖定類型, 命令類型]

      ‘也可先設(shè)置記錄集相關(guān)屬性 rs.addnew ‘告訴rs我們要添加一行

      rs(“字段名稱1或索引”)=值1

      ‘給要添加的行的一個(gè)字段賦值,三種方法等價(jià) rs.fields(“字段名稱2或索引”)=值2 rs!字段名稱3 =值3 …….rs.update

      ‘通知rs我們要把這個(gè)行寫入數(shù)據(jù)庫 rs.close

      ‘關(guān)閉記錄集對(duì)象 cnn.Close

      ‘關(guān)閉與數(shù)據(jù)庫的連接 set rs=Nothing

      ‘釋放rs對(duì)象實(shí)例 set cnn=Nothing ‘釋放Connection對(duì)象實(shí)例

      ? addnew使用方法后,如果要放棄添加的結(jié)果,應(yīng)調(diào)用記錄集的CancelUpdate方法放棄。

      方法2:使用Connection對(duì)象的Execute方法對(duì)表進(jìn)行SQL記錄插入操作(要求要熟悉SQL命令)Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象 cnn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data

      Source=ACCESS

      數(shù)據(jù)庫文件.MDB”

      ‘打開到數(shù)據(jù)庫的連接

      strSQL = “Insert Into 數(shù)據(jù)表(字段1, 字段2…..)Values(值1, 值2…..)

      ‘拼寫Insert插入語句 cnn.Execute strSQL

      '執(zhí)行Insert語句實(shí)現(xiàn)添加 …….cnn.Close

      ‘關(guān)閉與數(shù)據(jù)庫的連接

      set cnn=Nothing ‘釋放Connection對(duì)象實(shí)例

      四、修改數(shù)據(jù)庫操作

      方法1:使用recordset對(duì)象(此方法一般初學(xué)者使用較多)。方法如下—以ACCESS數(shù)據(jù)庫為例: Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象 cnn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data

      Source=ACCESS

      數(shù)據(jù)庫文件.MDB“

      ‘打開到數(shù)據(jù)庫的連接

      Dim rs As New Recordset

      '聲明一個(gè)記錄集對(duì)象

      rs.Open [記錄源, cnn, 游標(biāo)類型, 鎖定類型, 命令類型]

      ‘也可先設(shè)置記錄集相關(guān)屬性 …….rs(”字段名稱1或索引“)=新值1

      ‘‘給要修改的行的一個(gè)字段賦一個(gè)新值,三種方法等價(jià) rs.fields(”字段名稱2或索引“)=新值2 rs!字段名稱3 =新值3 …….rs.update

      ‘通知rs,我們要把修改好的記錄行寫入數(shù)據(jù)庫 rs.close

      ‘關(guān)閉記錄集對(duì)象 cnn.Close

      ‘關(guān)閉與數(shù)據(jù)庫的連接 set rs=Nothing

      ‘釋放rs對(duì)象實(shí)例 set cnn=Nothing ‘釋放Connection對(duì)象實(shí)例

      ? 如果放棄修改結(jié)果,應(yīng)調(diào)用記錄集的CancelUpdate方法放棄更新數(shù)據(jù)庫。

      方法2:使用Connection對(duì)象的Execute方法對(duì)表進(jìn)行SQL記錄更新操作(要求要熟悉SQL命令)Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象 cnn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data

      Source=ACCESS

      數(shù)據(jù)庫文件.MDB“

      ‘打開到數(shù)據(jù)庫的連接

      strSQL = ”Update 數(shù)據(jù)表 Set 字段1=新值1, 字段2=新值2…..‘拼寫Update語句,以便進(jìn)行修改 cnn.Execute strSQL

      '執(zhí)行Insert語句實(shí)現(xiàn)添加 …….cnn.Close

      ‘關(guān)閉與數(shù)據(jù)庫的連接

      set cnn=Nothing ‘釋放Connection對(duì)象實(shí)例

      五、刪除數(shù)據(jù)庫操作

      方法1:使用recordset對(duì)象(此方法一般初學(xué)者使用較多)。方法如下—以ACCESS數(shù)據(jù)庫為例方法1:通過 Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象 cnn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data

      Source=ACCESS

      數(shù)據(jù)庫文件.MDB”

      ‘打開到數(shù)據(jù)庫的連接

      Dim rs As New Recordset

      '聲明一個(gè)記錄集對(duì)象

      rs.Open [記錄源, cnn, 游標(biāo)類型, 鎖定類型, 命令類型]

      ‘也可先設(shè)置記錄集相關(guān)屬性 …….rs.Delete

      ‘刪除當(dāng)前記錄 …….rs.update

      ‘通知rs,我們要把修改好的記錄行寫入數(shù)據(jù)庫 rs.close

      ‘關(guān)閉記錄集對(duì)象 cnn.Close

      ‘關(guān)閉與數(shù)據(jù)庫的連接 set rs=Nothing

      ‘釋放rs對(duì)象實(shí)例 set cnn=Nothing ‘釋放Connection對(duì)象實(shí)例

      ? 刪除數(shù)據(jù)庫記錄前應(yīng)先找到(查詢)待刪除的記錄項(xiàng)(通過rs.Open來實(shí)現(xiàn))。

      方法2:使用Connection對(duì)象的Execute方法(要求使用者要熟悉SQL命令)例如:如果要將數(shù)據(jù)庫“成績.mdb”中的名字為“學(xué)生情況表”的數(shù)據(jù)表中,學(xué)號(hào)為'07001'的記錄刪除,可通過下列方法來實(shí)現(xiàn)。

      Dim cnn As New ADODB.Connection ‘創(chuàng)建Connection對(duì)象cnn,關(guān)鍵字new用于創(chuàng)建新對(duì)象 cnn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data

      Source=ACCESS

      數(shù)據(jù)庫文件.MDB”

      ‘打開到數(shù)據(jù)庫的連接

      sql=“delete from學(xué)生情況表where 學(xué)號(hào)='07001'”

      ‘拼寫delete語句,以便進(jìn)行刪除

      cnn.Execute strSQL

      '執(zhí)行elete語句實(shí)現(xiàn)刪除 …….cnn.Close

      ‘關(guān)閉與數(shù)據(jù)庫的連接

      set cnn=Nothing ‘釋放Connection對(duì)象實(shí)例

      附:分頁簡介---使用記錄集

      一、.原理:

      分頁其實(shí)是將數(shù)據(jù)庫中的記錄分割成若干段,并將各段記錄放在同一個(gè)“邏輯頁面”上“分屏顯示”出來,其實(shí)顯示的“邏輯頁面”只有1頁,只是每次顯示的頁面記錄不同罷了。通過控制各頁中數(shù)據(jù)庫顯示記錄的不同,來刷新頁面的顯示內(nèi)容。

      二、用到的幾個(gè)記錄集屬性

      rs.pagesize:定義一頁顯示記錄的條數(shù); rs.recordcount:統(tǒng)計(jì)數(shù)據(jù)庫記錄總數(shù); rs.pagecount:統(tǒng)計(jì)總頁數(shù);

      rs.absolutepage:將數(shù)據(jù)庫指針移動(dòng)到當(dāng)前頁要顯示的數(shù)據(jù)記錄的第一條記錄;比如有20條記錄的一個(gè)數(shù)據(jù)庫,我們分為一頁顯示5條記錄,如將AbsolutePage屬性設(shè)為2,則當(dāng)前記錄指針移至第2頁第1條記錄,也即將指針移動(dòng)到第6條記錄處,依次類推....(AbsolutePage 屬性是以 1 為起始的)

      第四篇:刀具和編程總結(jié)

      ① 白鋼刀(即高速鋼刀具)因其通體銀白色而得名,主要用于直壁加工。白鋼刀價(jià)格便宜,但切削壽命短、吃刀量小、進(jìn)給速度低、加工效率低,在數(shù)控加工中較少使用。

      ② 飛刀(即鑲嵌式刀具)主要為機(jī)夾式可轉(zhuǎn)位刀具,這種刀具剛性好、切削速度高,在數(shù)控加工中應(yīng)用非常廣泛,用于模胚的開粗、平面和曲面粗精加工效果均很好。

      ③ 合金刀(通常指的是整體式硬質(zhì)合金刀具)精度高、切削速度高,但價(jià)格昂貴,一般用于精加工。

      數(shù)控刀具與普通機(jī)床上所用的刀具相比,有以下不同的要求。

      (1)剛性好(尤其是粗加工刀具)、精度高、抗振及熱變形小。

      (2)互換性好,便于快速換刀。

      (3)壽命高,切削性能穩(wěn)定、可靠。

      (4)刀具的尺寸便于調(diào)整,以減少換刀調(diào)整時(shí)間。

      (5)刀具應(yīng)能可靠地?cái)嘈蓟蚓硇?,以利于切屑的排除。?)系列化、標(biāo)準(zhǔn)化,以利于編程和刀具管理。

      ① 刀具直徑越大,轉(zhuǎn)速越慢;同一類型的刀具,刀桿越長,吃刀量就要減小,否則容易彈刀而產(chǎn)生過切。

      ② 白鋼刀轉(zhuǎn)速不可過快,進(jìn)給速度不可過大。

      ③ 白鋼刀容易磨損,開粗時(shí)少用白鋼刀。

      ① 以上的飛刀參數(shù)只能作為參考,因?yàn)椴煌娘w刀材料其參數(shù)值也不相同,不同的刀具廠生產(chǎn)的飛刀其長度也略有不同。另外,刀具的參數(shù)值也因數(shù)控銑床或加工中心的性能和加工材料的不同而不同,所以刀具的參數(shù)一定要根據(jù)工廠的實(shí)際情況來設(shè)定。

      ② 飛刀的剛性好,吃刀量大,最適合模胚的開粗。另外,飛刀精加工陡峭面的質(zhì)量也非常好。③ 飛刀主要是鑲刀粒的,沒有側(cè)刃,① 合金刀剛性好,不易產(chǎn)生彈刀,用于精加工模具的效果最好。

      ② 合金刀和白鋼刀一樣有側(cè)刃,精銑銅公直壁時(shí)往往使用其側(cè)刃。

      ① 刀具的名稱一般根據(jù)刀具的直徑和圓角半徑來定義,例如,直徑為30,圓角半徑為5的飛刀,其名稱定義為D30R5;直徑為12的平底刀,其名稱定義為D12;半徑為5的球刀,其名稱定義為R5。

      ② 輸入刀具名稱時(shí),只需要輸入小寫字母即可,系統(tǒng)會(huì)自動(dòng)將字母轉(zhuǎn)為大寫狀態(tài)。③ 設(shè)置刀具參數(shù)時(shí),只需要設(shè)置刀具的直徑和底圓角半徑即可,其他參數(shù)按默認(rèn)即可。加工時(shí),編程人員還需要編寫加工工藝說明卡,注明刀具的類型和實(shí)際長度。

      機(jī)床坐標(biāo)一般在工件頂面的中心位置,所以創(chuàng)建機(jī)床坐標(biāo)時(shí),最好先設(shè)置好當(dāng)前坐標(biāo),然后在〖CSYS〗對(duì)話框中設(shè)置“參考”為WCS。

      加工模具時(shí),其開粗余量多設(shè)為0.5,但如果是加工銅公余量就不一樣了,因?yàn)殂~公(銅公是火花機(jī)放電加工用的電極)最后的結(jié)果是要留負(fù)余量的。

      模具加工要求越高時(shí),其對(duì)應(yīng)的公差值就應(yīng)該越小。

      進(jìn)行實(shí)體模擬驗(yàn)證前,必須設(shè)置加工工件和毛坯,否則無法進(jìn)行實(shí)體模擬。

      第五篇:編程題總結(jié)

      C作業(yè)匯總

      1.short a,b=32767;/*short類型在內(nèi)存中占2B*/ a=b+1;問:a的值是多少?并分析原因。

      2.有一4位數(shù)整數(shù),假設(shè)用abcd表示,請(qǐng)把這個(gè)4位數(shù)的每個(gè)數(shù)位用表達(dá)式表示出來。3.從鍵盤輸入圓的半徑r,計(jì)算并輸出圓的面積s(要求:半徑r定義為float型;圓周率?定義為符號(hào)常量;面積s保留2位小數(shù))#define PI 3.14159 #include void main(){ float r,s;printf(“請(qǐng)輸入半徑r:n”);scanf(“%f”,&r);s=PI*r*r;printf(“面積是:%.2fn”,s);}

      4.輸入m>=3的正整數(shù),判斷m是否素?cái)?shù)。畫出算法流程圖及NS圖

      5.有一函數(shù):

      x?1 ?x ?y??2x?1 1?x?10

      ?3x-11 x?10 ?寫一段程序,輸入x,輸出y值。

      要求x,y聲明為float類型,y保留2位小數(shù)。#include void main(){ float x,y;printf(“請(qǐng)輸入x的值:n”);scanf(“%f”,&x);

      if(x<1)

      y=x;else

      if(x<10)

      y=2*x-1;

      else

      y=3*x-11;

      }

      printf(“y=%.2fn”,y);

      x3x5x7x9?????,6.課后習(xí)題4.17(P159)利用泰勒級(jí)數(shù)sinx?x?計(jì)算sinx的3!5!7!9!值。要求最后一項(xiàng)的絕對(duì)值小于10,并統(tǒng)計(jì)出此時(shí)累加了多少項(xiàng)。#include #include void main(){ float x,sinx=0;float term;

      /*記錄每個(gè)項(xiàng)數(shù)*/ int n=1,count=0;/*count記錄累加了多少項(xiàng)*/

      printf(“請(qǐng)輸入x值(弧度):n”);scanf(“%f”,&x);

      term=x/n;while(fabs(term)>1e-5)

      /* while循環(huán)*/ {

      sinx+=term;

      count++;

      n+=2;

      term=-term*x*x/((n-1)*n);}

      /* do

      /*do while循環(huán)*/ {

      sinx+=term;

      count++;

      n+=2;

      term=-term*x*x/((n-1)*n);}while(fabs(term)>1e-5);

      */

      printf(“sin(%.2f)=%.4fn”,x,sinx);printf(“一共累加了:%d項(xiàng)。n”,count);}

      7.用牛頓迭代法求下面方程在1.5附近的根:

      2x?4x?3x?6?0 32?5

      牛頓迭代公式:

      x1?x0?f(x0)f?(x0)

      #include #include void main(){ float x0,x1=1.5;float y1,y2;

      /*y1記錄f(x0),y2記錄f(x0)的導(dǎo)數(shù)*/

      do {

      x0=x1;

      y1=2*x0*x0*x0-4*x0*x0+3*x0-6;

      y2=6*x0*x0-8*x0+3;

      x1=x0-y1/y2;}while(fabs(x1-x0)>1e-5);

      printf(“the root is:%.2fn”,x1);}

      8.寫一函數(shù),輸入一個(gè)16進(jìn)制整數(shù),輸出相應(yīng)的10進(jìn)制數(shù)。例:從鍵盤輸入2a,輸出結(jié)果是42。

      要求:若輸入數(shù)據(jù)不合法,則輸出提示信息。如輸入了35g,輸出“您輸入的16進(jìn)制數(shù)不合法!”。

      #include #include void main(){ char c;int sum=0;

      printf(“請(qǐng)輸入一個(gè)16進(jìn)制數(shù)字:n”);

      while((c=getchar())!='n'){

      if(c>='0' && c<='9')

      sum=sum*16+c-'0';

      else

      if(c>='a' && c<='f')

      sum=sum*16+c-87;

      else

      if(c>='A' && c<='F')

      sum=sum*16+c-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      } }

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 方法2:用字符串處理的方式 #include #include void main(){ char str[20];int i,sum=0;

      printf(“請(qǐng)輸入一個(gè)16進(jìn)制數(shù)字:n”);gets(str);

      for(i=0;str[i];i++){

      if(str[i]>='0' && str[i]<='9')

      sum=sum*16+str[i]-'0';

      else

      if(str[i]>='a' && str[i]<='f')

      sum=sum*16+str[i]-87;

      else

      if(str[i]>='A' && str[i]<='F')

      sum=sum*16+str[i]-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      } }

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 方法3:用字符數(shù)組及指針處理的方式 #include #include void main()

      { char str[20],*p=str;int sum=0;

      printf(“請(qǐng)輸入一個(gè)16進(jìn)制數(shù)字:n”);gets(p);

      while(*p){

      if(*p>='0' && *p<='9')

      sum=sum*16+*p-'0';

      else

      if(*p>='a' && *p<='f')

      sum=sum*16+*p-87;

      else

      if(*p>='A' && *p<='F')

      sum=sum*16+*p-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      }

      p++;}

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 9.編寫一個(gè)小函數(shù),其功能是計(jì)算兩個(gè)整數(shù)的平均值,該函數(shù)要在主函數(shù)中調(diào)用。

      #include void main(){ int x,y;float avg;float average(int,int);printf(“輸入x,y的值,用空格分隔兩個(gè)數(shù):n”);scanf(“%d%d”,&x,&y);

      avg=average(x,y);

      printf(“%d,%d的平均值是:%.2fn”,x,y,avg);}

      float average(int x,int y)

      { return(x+y)/2.0;}

      10.有N(N用宏定義為符號(hào)常量)個(gè)元素的一維整型數(shù)組,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。然后,將這個(gè)整型數(shù)組中的值逆序存放。例如,原來5個(gè)元素的順序?yàn)?、1、4、6、5,逆序之后各元素的值是5、6、4、1、8 #define N 5 #include void main(){ int a[N];int i,t;

      printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      printf(“數(shù)組原來的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      for(i=0;i

      t=a[i];

      a[i]=a[N-1-i];

      a[N-1-i]=t;}

      printf(“n逆序之后數(shù)組的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      printf(“n”);} 11.有N(N用宏定義為符號(hào)常量)個(gè)元素的一維整型數(shù)組,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。然后,對(duì)該數(shù)組元素進(jìn)行由小到大排序(要求,該功能用函數(shù)實(shí)現(xiàn)),輸出數(shù)組中各元素值。最后,從鍵盤隨機(jī)輸入一個(gè)整數(shù),并把該整數(shù)插入上述數(shù)組中(該功能用函數(shù)實(shí)現(xiàn)),使得插入該整數(shù)后的數(shù)組仍然有序,輸出數(shù)組中各元素的值。#define N 5 #include void main(){ int a[N+1];

      int i,x;void sort(int array[],int n);void insert(int array[],int n,int x);

      printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      sort(a,N);

      /*調(diào)用sort對(duì)數(shù)組進(jìn)行排序*/

      printf(“n升序排序之后數(shù)組的值是:n”);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n輸入一個(gè)x值插入到數(shù)組中:n”);scanf(“%d”,&x);

      insert(a,N,x);

      printf(“n插入%d之后數(shù)組的值是:n”,x);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n”);}

      void sort(int array[],int n)/*用選擇法對(duì)數(shù)組array升序排序*/ { int i,j,t,min;

      for(i=0;i

      min=i;

      for(j=i+1;j

      if(array[j]

      min=j;

      if(min!=i)

      {

      t=array[i];

      array[i]=array[min];

      array[min]=t;

      } } }

      void insert(int array[],int n,int x){ int i,pos;

      for(i=0;i

      pos=i;

      for(i=n-1;i>=pos;i--)

      array[i+1]=array[i];

      array[pos]=x;}

      12.有一整型數(shù)組,N(N用宏定義為符號(hào)常量)個(gè)元素,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。從鍵盤隨機(jī)輸入一個(gè)整數(shù)x,刪除該數(shù)組中值與x相同的所有元素(該功能用函數(shù)實(shí)現(xiàn)),輸出數(shù)組中各元素的值。#define N 5 #include void main(){ int a[N];int i,x,n;int delet(int a[],int n,int x);

      printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      printf(“數(shù)組原來的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      printf(“n請(qǐng)輸入要?jiǎng)h除的值x:n”);scanf(“%d”,&x);

      n=delet(a,N,x);

      /*n值是刪除與x相同的元素后,數(shù)組剩余元素的個(gè)數(shù)。*/

      printf(“刪除%d之后數(shù)組的值是:n”,x);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n”);

      }

      int delet(int a[],int n,int x){ int i,j;

      for(i=0,j=0;i

      if(a[i]!=x)

      a[j++]=a[i];

      return j;}

      13.從鍵盤隨機(jī)輸入一字符串,將所有ASCII值為偶數(shù)的字符輸出。例如:輸入abc123,輸出結(jié)果是b2(因?yàn)閎的ASCII值是98,2的ASCII值是50,其他字符的ASCII值都是奇數(shù))

      #include #define N 40 void main(){ char str[N];int i;

      printf(“輸入字符串:n”);gets(str);

      printf(“ASCII碼是偶數(shù)的字符有:”);for(i=0;str[i];i++)

      if(str[i]%2==0)putchar(str[i]);

      printf(“n”);}

      14.從鍵盤輸入兩個(gè)字符串s1,s2,把s2連接到s1的末尾。不能用strcat函數(shù) #include #define N 40 void main(){ char str1[N],str2[N];void mystrcat(char *p1,char *p2);

      printf(“輸入兩個(gè)字符串,輸入回車鍵結(jié)束:n”);gets(str1);gets(str2);

      mystrcat(str1,str2);

      printf(“連接在一起的字符串是:n”);puts(str1);

      }

      void mystrcat(char *p1,char *p2){ while(*p1)p1++;while(*p2)

      *p1++=*p2++;*p1='