读书人

C语言如何连接SQL 2000

发布时间: 2012-06-21 13:42:41 作者: rapoo

C语言怎么连接SQL 2000?
请问C语言怎么连接SQL 2000?

谢谢啊。。。

[解决办法]
百度 c语言 连接数据库
[解决办法]
这个要看你的编译器,不同编译器连接方法是不同的
如是是VC的,可用ADO,部分代码
_CommandPtr m_ptrCommand; //命令对象
_RecordsetPtr m_ptrRecordset; //记录集对象
_ConnectionPtr m_ptrConnection; //数据库对象

//创建对象
m_ptrCommand.CreateInstance(__uuidof(Command));
m_ptrRecordset.CreateInstance(__uuidof(Recordset));
m_ptrConnection.CreateInstance(__uuidof(Connection));
m_ptrConnection->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=eForceCon;Data Source=Server"; //连接串
m_ptrConnection->Open("","","",adModeUnknown);
m_ptrRecordset=m_ptrConnection->Execute("select * from test",NULL,adCmdText);
m_ptrRecordset->GetCollect("id");
...

[解决办法]

C/C++ code
#pragma once#include "stdafx.h"#import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll"  rename_namespace("DADA") rename("EOF","adoEOF")using namespace DADA;namespace DB_DB{    /*class DLL_EXPORT DADA::_ConnectionPtr;    class DLL_EXPORT DADA::_CommandPtr;    class DLL_EXPORT DADA::_RecordsetPtr;*/    class DLL_EXPORT DB_DBAccess    {    public:        DB_DBAccess(void);        DB_DBAccess(const string & strServer,const string & UserName,const string & Password);    public:        ~DB_DBAccess(void);    public:        //////////////////////////////////////////////////////////////////////////        //初始化        BOOL Init(const string & strServer,const string & UserName,const string & Password);    public:        //////////////////////////////////////////////////////////////////////////        //清理        BOOL Clear();        //////////////////////////////////////////////////////////////////////////        //执行一条记录        bool ExecuteSql();        //////////////////////////////////////////////////////////////////////////        //返回多条记录        bool GetDataSet();    public:            _ConnectionPtr m_pConnection;        _CommandPtr m_pCommand;        _RecordsetPtr m_rs;        bool m_bConned;  //数据库连接状态    public:        void ShowComError(_com_error & pComError);    public:        // 数据库建立连接控制        BOOL ConnectDb();    public:        //////////////////////////////////////////////////////////////////////////        //设置内部连接        void SetPassword(string & strServer,string & UserName,string & Password);    private:            void CloseDb();    public:        string Get_DB_Server(){return m_DB_Server;}        string Get_DB_UserName(){return m_DB_UserName;}        string Get_DB_Password(){return m_DB_Password;}    public:        ///////////////////////////////////////////////////////////////////////////        //数据库服务器        string m_DB_Server;        //////////////////////////////////////////////////////////////////////////        //数据库用户名        string m_DB_UserName;        //////////////////////////////////////////////////////////////////////////        //数据库登陆密码        string m_DB_Password;    };}
[解决办法]
写成一个类来操作sql server数据库
C/C++ code
#include "stdafx.h"/*#pragma once#include "DB_DBAccess.h"namespace DB_DB{    DB_DBAccess::DB_DBAccess(void)    {        m_bConned = false;        //////////////////////////////////////////////////////////////////////////        //参数        // 初始化COM运行环境,为使用msado15.dll做准备,与函数线程相关        DWORD ComReturn = CoInitialize(NULL);        while (ComReturn != S_OK  && ComReturn !=0 && ComReturn != 1)        {            printf("初始化COM运行环境, 正在重试\n");            ComReturn = CoInitialize(NULL);            continue;        }        printf("初始化COM运行环境成功\n");    }    DB_DBAccess::DB_DBAccess(const string & strServer,const string & UserName,const string & Password)    {        this->m_DB_Server= strServer;        this->m_DB_Password = Password;        this->m_DB_UserName = UserName;        m_bConned = false;        //////////////////////////////////////////////////////////////////////////        //参数        // 初始化COM运行环境,为使用msado15.dll做准备,与函数线程相关        DWORD ComReturn = CoInitialize(NULL);        while (ComReturn != S_OK  && ComReturn !=0 && ComReturn != 1)        {            printf("初始化COM运行环境, 正在重试\n");            ComReturn = CoInitialize(NULL);            continue;        }        this->ConnectDb();        printf("初始化COM运行环境成功\n");    }    DB_DBAccess::~DB_DBAccess(void)    {        Clear();    }    BOOL DB_DBAccess::Init(const string & strServer,const string & UserName,const string & Password)    {        this->m_DB_Server= strServer;        this->m_DB_Password = Password;        this->m_DB_UserName = UserName;        m_bConned = false;        return TRUE;    }    BOOL DB_DBAccess::Clear()    {        try        {        /*    CloseHandle(this->m_pCommand);            CloseHandle(this->m_rs);            CloseHandle(this->m_pConnection);*/            // 注销COM使用环境            CoUninitialize();        }        catch (_com_error & e)        {            ShowComError(e);                printf("数据库清理异常\n");        }         return true;    }    void DB_DBAccess::SetPassword(string & strServer,string & UserName,string & Password)    {        this->m_DB_Server= strServer;        this->m_DB_Password = UserName;        this->m_DB_UserName = Password;    }    BOOL DB_DBAccess::ConnectDb()    {        HRESULT hr;        BOOL ret;                string con_str = "Provider=SQLOLEDB; Server="+m_DB_Server+"; Database=UPS; ";        con_str += " uid="+m_DB_UserName+"; pwd="+m_DB_Password+";";                _bstr_t strCon = con_str.c_str();        try        {            hr = m_pConnection.CreateInstance("ADODB.Connection");            if(SUCCEEDED(hr))            {                                                  m_pConnection->Open(strCon, "", "", NULL);                m_pCommand.CreateInstance(__uuidof(Command));                m_pCommand->ActiveConnection = m_pConnection;                ret = TRUE;                m_bConned = true;                printf("数据库联接成功\n\n");            }        }        catch (_com_error & e)        {            ShowComError(e);                printf("数据库连接异常\n\n");            ret = FALSE;        }         return ret;    }    void DB_DBAccess::CloseDb()    {        if(NULL != m_pConnection && m_pConnection->State)        {            m_pConnection->Close();            printf("数据库关闭成功\n");            m_bConned = false;        }        m_pConnection = NULL;    }    void DB_DBAccess::ShowComError(_com_error & pComError)    {        // 错误描述        printf("Description = %s \n", (LPCSTR) pComError.Description() );     }} 

读书人网 >C语言

热点推荐