在VS下用C語言串連SQLServer2008

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   os   使用   sp   on   

原文: 在VS下用C語言串連SQLServer2008

step1:啟動SQLSERVER服務

step2:打建立資料庫test,在test庫中建立test表(a varchar(200),b varchar(200))
 step3:建立系統DSN,開始菜單 ->運行 ->odbcad32,
  添加->SQL SERVER Native Client 10.0
 名稱:csql,伺服器:localhost
 使用使用者使用登入ID和密碼的SQLSERVER驗證,登入ID:sa,密碼:pass
  更改預設的資料庫為:test
 ...
 測試資料來源,測試成功,即DNS添加成功。

-------------------------------------------------------------------

#include <stdio.h>   

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

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

/*
    cpp檔案功能說明:
    1.資料庫操作中的添加,修改,刪除,主要體現在SQL語句上
    2.採用直接執行方式和參數先行編譯執行方式兩種
*/
int main(){   
    char a[200]="bbb";
    char b[200]="200";
    SQLINTEGER   p;
    RETCODE retcode;   
    UCHAR    szDSN[SQL_MAX_DSN_LENGTH+1]   =   "csql",   
            szUID[MAXNAME]   =   "sa",   
            szAuthStr[MAXNAME]   =   "pass";  
    //SQL語句
        //直接SQL語句
    UCHAR    sql[37] = "insert into test values(‘aaa‘,‘100‘)";
        //先行編譯SQL語句
    UCHAR    pre_sql[29] = "insert into test values(?,?)";
    //1.串連資料來源
        //分配ODBC環境控制代碼

    retcode   =   SQLAllocHandle   (SQL_HANDLE_ENV,   NULL,   &henv);  

// 告訴ODBC這是一個3.0標準的應用程式  

 retcode   =   SQLSetEnvAttr(henv,   SQL_ATTR_ODBC_VERSION,   (SQLPOINTER)SQL_OV_ODBC3,   SQL_IS_INTEGER);   

        // 分配串連控制代碼並建立串連
    retcode   =   SQLAllocHandle(SQL_HANDLE_DBC,   henv,   &hdbc1);   
    retcode   =   SQLConnect(hdbc1,   szDSN,(SWORD)strlen(szDSN),   szUID,(SWORD)strlen(szUID),   szAuthStr,(SWORD)strlen(szAuthStr));    
    //判斷串連是否成功
    if   (   (retcode   !=   SQL_SUCCESS)   &&   (retcode   !=   SQL_SUCCESS_WITH_INFO)   )   {     
        printf("串連失敗!\n");
    }   else   {   
        //2.建立並執行一條或多條SQL語句
        /*
        1.分配一個語句控制代碼(statement handle)
        2.建立SQL語句
        3.執行語句
        4.銷毀語句
        */
        retcode   =   SQLAllocHandle(SQL_HANDLE_STMT,   hdbc1,   &hstmt1);   
        //第一種方式
        //直接執行
        //添加操作
        //SQLExecDirect (hstmt1,sql,37);
        
        //第二種方式
        //綁定參數方式
        
         p   =   SQL_NTS;
        //1先行編譯
        SQLPrepare(hstmt1,pre_sql,29); //第三個參數與數組大小相同,而不是資料庫列相同
        //2綁定參數值
        SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p);
        SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&b,0,&p);
        //3 執行
        SQLExecute(hstmt1);
        
        printf("操作成功!");
        //釋放語句控制代碼
        SQLCloseCursor (hstmt1);
        SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);
    
    }   
    //3.斷開資料來源
    /*
     1.斷開與資料來源的串連.
     2.釋放串連控制代碼.
     3.釋放環境控制代碼(如果不再需要在這個環境中作更多串連)
    */
    SQLDisconnect(hdbc1);    
    SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);   
    SQLFreeHandle(SQL_HANDLE_ENV, henv);   
    system("pause");
    return(0);   
}

-------------------------------------------------------------------------------------------------------------------------------------

注意,表名不能取mh_login,只能login


在VS下用C語言串連SQLServer2008

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.