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() ); }}