亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mfc odbc下將二進(jìn)制數(shù)據(jù)壓入數(shù)據(jù)庫字段 .txt

?? MFC訪問SQLServer數(shù)據(jù)庫中圖片
?? TXT
字號(hào):
請(qǐng)高手指點(diǎn),MFC ODBC下將二進(jìn)制數(shù)據(jù)壓入數(shù)據(jù)庫字段  

darter
金槍魚  發(fā)表于 2005-4-20 22:08:40 [200分]    
--------------------------------------------------------------------------------

在MFC ODBC下,我不想派生記錄集綁定字段交換使用CLongBinary類型類處理圖形數(shù)據(jù),而是想直接使用CRecordset類對(duì)象處理數(shù)據(jù)。


現(xiàn)在假定數(shù)據(jù)庫指針(CDatabase *) pDb已經(jīng)打開,記錄集(CRecordset *)pRs已經(jīng)打開。二進(jìn)制數(shù)據(jù)記錄在全局內(nèi)存塊(HGLOBAL) hGlobal處,現(xiàn)已經(jīng)鎖定,并可以通過鎖定地址(BYTE *)pPicData訪問。圖形數(shù)據(jù)的大小為(DWORD)dwSize。

//進(jìn)行寫操作******************************************************

    //所鎖定圖形內(nèi)存數(shù)據(jù),以便根據(jù)地址讀取數(shù)據(jù)
    BYTE *pPicData = reinterpret_cast<BYTE *> (GlobalLock(hGlobal));
    if (!pPicData)
    {//鎖定失敗
        TRACE(_T("內(nèi)存鎖定失敗!\n"));//調(diào)試時(shí)提示
        //這里不能釋放,因?yàn)樗菍?duì)話框的成員數(shù)據(jù)
        return FALSE;
    };
   
    BYTE *pBuf = pPicData;//將緩沖地址指向鎖定的地址頭部
         //??????????????????????????????
            此處怎么辦?怎樣將數(shù)據(jù)寫入到記錄集的圖形字段中
         //???????????????????????????????            

        
    
    //解除鎖定
    GlobalUnlock(hGlobal);//釋放內(nèi)存的鎖定
//****************************************************************

好像有SQLPutData和SQLGetData可以利用,不知道哪位高手用過,請(qǐng)指點(diǎn)。
 

hurtmanzc
馬踏飛燕  第1樓 回復(fù)于2005-4-22 16:29:54  
--------------------------------------------------------------------------------

SQL Server幫助里的:

如何使用執(zhí)行中的數(shù)據(jù)參數(shù) (ODBC)
使用執(zhí)行中的數(shù)據(jù) text、ntext 或 image 參數(shù) 

調(diào)用 SQLBindParameter 以將某個(gè)程序緩沖區(qū)與語句參數(shù)綁定在一起時(shí): 
使用 SQL_LEN_DATA_AT_EXEC(length) 的 pcbValue,其中 length 是以字節(jié)為單位的 text、ntext 或 image 參數(shù)數(shù)據(jù)的總長度。


使用程序定義參數(shù)標(biāo)識(shí)符的 rgbValue。 
調(diào)用 SQLExecDirect 或 SQLExecute 將返回 SQL_NEED_DATA,這表明執(zhí)行中的數(shù)據(jù)參數(shù)已準(zhǔn)備好進(jìn)行處理。


對(duì)每個(gè)執(zhí)行中的數(shù)據(jù)參數(shù): 
調(diào)用 SQLParamData 以獲得程序定義參數(shù) ID。如果還有其它執(zhí)行中的數(shù)據(jù)參數(shù),將返回 SQL_NEED_DATA。


一次或多次調(diào)用 SQLPutData 以發(fā)送參數(shù)數(shù)據(jù),直到 length 全部送出。 
調(diào)用 SQLParamData 以表明最后執(zhí)行中的數(shù)據(jù)參數(shù)的所有數(shù)據(jù)已全部送出。不返回 SQL_NEED_DATA。 
示例
本例說明使用 SQLPutData 在執(zhí)行中的數(shù)據(jù)文本參數(shù)中填充數(shù)據(jù)的方法。為簡化本示例,查錯(cuò)代碼已刪除。

// Sample ODBC3 console application to write SQL_LONGVARCHAR data
// using SQLPutData.
// Assumes DSN has table:
//  SQLSrvr: CREATE TABLE emp3 (NAME char(30), AGE int, 
//           BIRTHDAY datetime, Memo1 text)

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <odbcss.h>

#define TEXTSIZE   12000

SQLHENV      henv = SQL_NULL_HENV;
SQLHDBC      hdbc1 = SQL_NULL_HDBC;     
SQLHSTMT      hstmt1 = SQL_NULL_HSTMT;

int main() {
   RETCODE retcode;
      
   // SQLBindParameter variables.
   SDWORD      cbTextSize, lbytes;
   //SQLParamData variable.
   PTR         pParmID;
   //SQLPutData variables.
   UCHAR   Data[] = 
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
         "abcdefghijklmnopqrstuvwxyz";
   SDWORD   cbBatch = (SDWORD)sizeof(Data)-1;
   
    // Allocate the ODBC environment and save handle.
   retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv);
   // Notify ODBC that this is an ODBC 3.0 app.
   retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
                     (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER);
   // Allocate ODBC connection handle and connect.
   retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);
   retcode = SQLConnect(hdbc1, "MyDSN", SQL_NTS,
                   "sa", SQL_NTS, "MyPassWord", SQL_NTS);
   
   // Allocate statement handle.
   retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);

   // Set parameters based on total data to send.
   lbytes = (SDWORD)TEXTSIZE;
   cbTextSize = SQL_LEN_DATA_AT_EXEC(lbytes);
   // Bind the parameter marker.
   retcode = SQLBindParameter(hstmt1,   // hstmt
         1,                     // ipar
         SQL_PARAM_INPUT,            // fParamType
         SQL_C_CHAR,               // fCType
         SQL_LONGVARCHAR,            // FSqlType
         lbytes,                  // cbColDef
         0,                     // ibScale
         (VOID *)1,               // rgbValue
         0,                     // cbValueMax
         &cbTextSize);            // pcbValue

   // Execute the command.
   retcode = SQLExecDirect(hstmt1,
   "INSERT INTO emp3 VALUES('Paul Borm', 46,'1950-11-24 00:00:00', ?)",
                     SQL_NTS);
   // Check to see if NEED_DATA; if yes, use SQLPutData.
   retcode = SQLParamData(hstmt1, &pParmID);
   if (retcode == SQL_NEED_DATA)
   {
      while (lbytes > cbBatch)
      {
         SQLPutData(hstmt1, Data, cbBatch);
         lbytes -= cbBatch;
      }
      // Put final batch.
      SQLPutData(hstmt1, Data, lbytes); 
   }
   else
   {
         ProcessErrorMessages(SQL_HANDLE_STMT, hstmt1,
                     "SQLPutData Failed\n\n");
         return(9);
   }

   // Make final SQLParamData call.
   retcode = SQLParamData(hstmt1, &pParmID);

   /* Clean up. */
   SQLFreeHandle(SQL_HANDLE_STMT, hstmt1);
   SQLDisconnect(hdbc1);
   SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
   SQLFreeHandle(SQL_HANDLE_ENV, henv);
   return(0);
}


如何使用執(zhí)行中的數(shù)據(jù)列 (ODBC)
使用執(zhí)行中的數(shù)據(jù) text、ntext 或 image 列 

對(duì)每個(gè)執(zhí)行中的數(shù)據(jù)列,在以前由 SQLBindCol 綁定的緩沖區(qū)中放入特殊值: 
在 pcbValue 數(shù)據(jù)值緩沖區(qū)中放入 SQL_LEN_DATA_AT_EXEC(length),其中 length 是以字節(jié)為單位的 text、ntext 或 image 列數(shù)據(jù)的總長度。


在 rgbValue 數(shù)據(jù)長度緩沖區(qū)中放入由程序定義的列標(biāo)識(shí)符。 
調(diào)用 SQLSetPos 返回 SQL_NEED_DATA,這表明執(zhí)行中的數(shù)據(jù)列已準(zhǔn)備好進(jìn)行處理。


對(duì)每個(gè)執(zhí)行中的數(shù)據(jù)列: 
調(diào)用 SQLParamData 以獲得列數(shù)組指針。如果還有其它執(zhí)行中的數(shù)據(jù)列,將返回 SQL_NEED_DATA。


一次或多次調(diào)用 SQLPutData 以發(fā)送列數(shù)據(jù),直到 length 全部送出。 
調(diào)用 SQLParamData 以表明最后執(zhí)行中的數(shù)據(jù)列的所有數(shù)據(jù)已全部發(fā)送。不返回 SQL_NEED_DATA。 
示例
本例說明使用 SQLGetData 從執(zhí)行中的數(shù)據(jù) text 列中檢索數(shù)據(jù)的方法。刪除了查錯(cuò)代碼以簡化本示例。

// Sample ODBC3 console application to read SQL_LONGVARChar
// data using SQLGetData.
// Assumes DSN has table:
//  SQLSrvr: CREATE TABLE emp3 (NAME char(30), AGE int, 
//           BIRTHDAY datetime, Memo1 text)

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <odbcss.h>

#define TEXTSIZE      12000
#define BUFFERSIZE   450

SQLHENV      henv = SQL_NULL_HENV;
SQLHDBC      hdbc1 = SQL_NULL_HDBC;
SQLHSTMT      hstmt1 = SQL_NULL_HSTMT;

int main() {
   RETCODE retcode;
   SWORD   cntr;

   //SQLGetData variables.
   UCHAR   Data[BUFFERSIZE];
   SDWORD   cbBatch = (SDWORD)sizeof(Data)-1;
   SDWORD   cbTxtSize;

   // Clear data array.
   for(cntr = 0; cntr < BUFFERSIZE; cntr++)
      Data[cntr] = 0x00;
   
    // Allocate the ODBC environment and save handle.
   retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv);
   // Notify ODBC that this is an ODBC 3.0 app.
   retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
                     (SQLPOINTER) SQL_OV_ODBC3,
                     SQL_IS_INTEGER);
   // Allocate ODBC connection handle and connect.
   retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);
   retcode = SQLConnect(hdbc1, "MyDSN", SQL_NTS,
                   "sa", SQL_NTS, "MyPassWord, SQL_NTS);
   
   // Allocate statement handle; prepare, then execute command.
   retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
   retcode = SQLExecDirect(hstmt1,
                     "SELECT Memo1 FROM emp3",
                     SQL_NTS);

   // Get first row.
   retcode = SQLFetch(hstmt1);
   // Get the SQL_LONG column.
   cntr = 1;
   do {
      retcode = SQLGetData(hstmt1,   // hstmt
         1,                  // ipar
         SQL_C_CHAR,            // fCType
         Data,               // rgbValue
         cbBatch,               // cbValueMax
         &cbTxtSize);            // pcbValue
      if ( retcode != SQL_NO_DATA ) {
      printf("GetData iteration %d, pcbValue = %d,\n",
            cntr++, cbTxtSize);
      printf("Data = %s\n\n", Data);
      }
   } while (retcode != SQL_NO_DATA);

   /* Clean up. */
   SQLFreeHandle(SQL_HANDLE_STMT, hstmt1);
   SQLDisconnect(hdbc1);
   SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
   SQLFreeHandle(SQL_HANDLE_ENV, henv);
   return(0);
} // End Main.


//另外,個(gè)人感覺ado訪問SQL server很好用呀,并不是只能訪問access等數(shù)據(jù)庫呀
//如果感覺效率不夠,可以直接操作OLE DB組件對(duì)象提供的接口
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久青草大香线综合精品| 2023国产一二三区日本精品2022| 日本一不卡视频| 亚洲激情校园春色| 中文字幕欧美一| 《视频一区视频二区| 久久久久国产精品麻豆ai换脸| 日本丰满少妇一区二区三区| 亚洲观看高清完整版在线观看| 夜夜精品视频一区二区| 亚洲国产精品一区二区www| 日韩福利视频导航| 精品一区二区三区不卡| 成人免费看的视频| 日本道色综合久久| 日韩欧美亚洲国产精品字幕久久久| 欧美成人vr18sexvr| 国产精品另类一区| 亚洲永久免费av| 蜜臀av一区二区在线观看| 国产精品 日产精品 欧美精品| 不卡一区中文字幕| 8x8x8国产精品| 国产亚洲va综合人人澡精品| 亚洲视频精选在线| 日日夜夜免费精品| 国产99一区视频免费| 91蜜桃视频在线| 欧美mv日韩mv| 亚洲欧美乱综合| 久久精品国产秦先生| 从欧美一区二区三区| 欧美精品视频www在线观看| 久久午夜国产精品| 亚洲一区二区三区视频在线播放| 国产在线国偷精品免费看| 色综合久久综合中文综合网| 日韩美女视频一区二区在线观看| 国产精品麻豆久久久| 免费人成黄页网站在线一区二区| 丰满少妇在线播放bd日韩电影| 欧美性感一区二区三区| 国产欧美日韩三级| 秋霞电影一区二区| 色又黄又爽网站www久久| 亚洲精品一区二区三区影院| 亚洲第一会所有码转帖| 成人福利视频网站| 精品日韩一区二区三区| 香蕉影视欧美成人| 99精品欧美一区| 久久亚洲综合av| 蜜桃视频一区二区三区在线观看| 一本久久a久久精品亚洲| 久久嫩草精品久久久久| 日韩高清不卡一区二区| 欧美在线一区二区| 国产精品久久久久久久久搜平片 | ww久久中文字幕| 亚洲图片自拍偷拍| 91视视频在线观看入口直接观看www| 精品美女在线观看| 免费成人在线播放| 欧美人与z0zoxxxx视频| 亚洲一区二区三区四区五区中文 | 国产成人av一区二区三区在线| 这里只有精品电影| 五月激情综合色| 欧美日韩黄视频| 一区二区免费视频| 精品视频一区二区三区免费| 中文天堂在线一区| 成人午夜激情影院| 欧美国产日本韩| av一区二区三区四区| 亚洲欧洲av一区二区三区久久| 成人av网站大全| 中文字幕欧美一| 色综合天天天天做夜夜夜夜做| 亚洲免费视频中文字幕| 在线观看日韩电影| 五月激情综合网| 日韩欧美一区二区视频| 国产一区二区三区四区五区入口 | 国产欧美一区二区三区在线看蜜臀| 久草热8精品视频在线观看| 精品国产乱码久久久久久闺蜜| 久久99精品一区二区三区| 亚洲精品一区二区精华| 成人性视频网站| 亚洲综合色成人| 日韩丝袜美女视频| 国产一区二区福利| 亚洲图片你懂的| 欧美高清视频不卡网| 国产一二三精品| 亚洲丝袜美腿综合| 欧美精品九九99久久| 韩国精品主播一区二区在线观看 | 国产一区二区三区在线观看精品| 国产欧美一区二区三区网站 | 国产精品影视天天线| 国产精品九色蝌蚪自拍| 国产成人精品三级麻豆| 欧美亚洲尤物久久| 亚洲天天做日日做天天谢日日欢| 99久久精品国产精品久久| 欧美唯美清纯偷拍| 欧美在线视频日韩| 最新日韩av在线| 欧美精品乱码久久久久久按摩| 国产一区 二区| 亚洲国产综合色| 国产亚洲欧美一级| 欧美日韩免费电影| jlzzjlzz欧美大全| 免费高清在线一区| 国产真实乱偷精品视频免| 国产视频亚洲色图| 欧美日韩一区三区| 成人综合婷婷国产精品久久免费| 亚洲成人免费视| 国产精品国产a| 国产欧美日韩综合| 91精品国产综合久久香蕉麻豆| 欧美系列亚洲系列| 国产一区二区三区日韩| 亚洲国产精品久久久久秋霞影院| 久久理论电影网| 欧美一级淫片007| 欧美色视频在线| 一本色道久久加勒比精品 | 亚洲国产精品自拍| 国产精品家庭影院| 国产午夜亚洲精品羞羞网站| 欧美一区二区黄| 欧美精品色综合| 欧美偷拍一区二区| 91麻豆高清视频| 不卡高清视频专区| 国产91精品一区二区| 国产一区二区主播在线| 青椒成人免费视频| 日韩黄色免费网站| 日韩精品免费视频人成| 亚洲国产精品影院| 国产乱码字幕精品高清av| 亚洲国产你懂的| 激情综合色播激情啊| 蜜臀av一级做a爰片久久| 亚洲一区在线看| 一区二区三区**美女毛片| 亚洲蜜桃精久久久久久久| 国产精品激情偷乱一区二区∴| 久久精品一级爱片| 中文字幕乱码亚洲精品一区| 久久精品视频免费| 中文字幕欧美国产| 国产精品女人毛片| 成人免费一区二区三区视频| 亚洲欧洲韩国日本视频| 亚洲欧美另类小说| 亚洲综合精品久久| 日本三级韩国三级欧美三级| 青青青伊人色综合久久| 久久精品国产一区二区| 国产精品一区二区三区四区| 成人综合日日夜夜| 91精品福利视频| 69堂国产成人免费视频| 欧美xxxx老人做受| 中文字幕精品一区| 亚洲黄色小视频| 日本成人在线网站| 国产69精品久久久久毛片| 91免费在线看| 在线电影国产精品| 国产日韩三级在线| 亚洲一区在线看| 国产一区二区电影| 色综合天天狠狠| 日韩一区二区影院| 亚洲欧美在线aaa| 日韩黄色免费电影| 成人黄色综合网站| 91 com成人网| 中文字幕在线观看不卡视频| 亚洲成av人综合在线观看| 狠狠色狠狠色综合| 欧美亚洲综合一区| 国产视频一区在线播放| 亚洲尤物视频在线| 风间由美中文字幕在线看视频国产欧美| 色婷婷综合久久久中文一区二区| 日韩一级大片在线| 亚洲摸摸操操av| 国产精品伊人色| 欧美久久久一区| 亚洲欧美日韩一区| 国产aⅴ综合色|