首页

文章

c语言怎样连接数据库?

发布网友 发布时间:2022-03-23 23:40

我来回答

3个回答

热心网友 时间:2022-03-24 01:10

1、配置ODBC数据源。
2、使用SQL函数进行连接。
对于1、配置数据源,配置完以后就可以编程操作数据库了。
对于2、使用SQL函数进行连接,参考代码如下:
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
void main()
{
HENV henv; //环境句柄
HDBC hdbc; //数据源句柄
HSTMT hstmt; //执行语句句柄
unsigned char datasource[]="数据源名称"; //即源中设置的源名称
unsigned char user[]= "用户名"; //数据库的帐户名
unsigned char pwd[]= "密码"; //数据库的密码
unsigned char search[]="select xm from stu where xh=0";
SQLRETURN retcode; //记录各SQL函数的返回情况
// 分配环境句柄
retcode= SQLAllocEnv(&henv); // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL
, &henv);
// 设置ODBC环境版本号为3.0
retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 分配连接句柄
retcode= SQLAllocConnect(henv,&hdbc); // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//设置连接属性,登录超时为*rgbValue秒(可以没有)
// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);
//直接连接数据源
// 如果是windows身份验证,第二、三参数可以是
,也可以是任何字串
//SQL_NTS 即 "
retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );
//分配语句句柄
retcode= SQLAllocStmt(hdbc,&hstmt); // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//直接执行查询语句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)
SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);
//遍历结果集到相应缓冲区 queryData
SQLFetch(hstmt);
/*
*对遍历结果的相关操作,如显示等
*/
//注意释放顺序,否则会造成未知错误!
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}

热心网友 时间:2022-03-24 02:28

你要连什么数据库啊?
各种数据库的连接方法是不一样的。

oracle,mysql,sqlserver,sqlite,db2等等。很多种。

其中sqlite使用c写的,开源,可以放到你自己的程序中。
要是想研究一下数据库的话,可以看他。

热心网友 时间:2022-03-24 04:02

哥们自己看吧。。。。附一源码
CWinApp theApp;
using namespace std;

CHmbAdoDBRs RfRst;
CString sSql;
CString seq, body, eng, tm, tl, icol, ecol, alc, bhmcdate;
int i;

BOOL DbOpen();
BOOL CkseqtmpSelect();
BOOL CkseqtmpUpdate();
int PrintStatus();
int SockInit();

CHmbAdoDB Sqldb;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int cnt = 0;
int nRetCode = 0;
int page = 1;
int prt_ret;
CString strDate, strTime;

// initialize MFC and print and error on failure
if (!AfxWinInit(::GetMoleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}

//DataBase Open...
if(DbOpen()) cout << "DataBase Open Open Ok" << endl;
else {
cout << "DataBase Open Error\n" << endl;
return -1;
}

while( 1 ) {
ret = SockInit(); //建立socket连接
if ( ret < 0 ) Sleep(3000);
else break;
}

while( 1 ) {
if ( CkseqtmpSelect() == FALSE ) { // CKSEQTMP FLAG03='0' SELECT
Sleep(3000);
continue;
}

while( 1 ) { // PRINTER STATUS Check
prt_ret = PrintStatus();
if ( prt_ret == 1 ) {
closesocket(sid);
WSACleanup();

while( 1 ) {
ret = SockInit();
if ( ret < 0 ) Sleep(3000);
else break;
}
break;
}
else {
printf("Printer Status Check !!!\n");
Sleep(3000);
}
}

printf("%s-%s-%s-%s-%s-%s-%s-%s-%s\n", seq, body, eng, tm, tl, icol, ecol, alc, bhmcdate);
memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, "%c%c1", ESC, W);
ret = send( sid, sbuf, strlen(sbuf), 0 );

if ( cnt == 0 || atoi(seq) < 2 ) {
if ( atoi(seq) < 2 ) {
cnt = 0;
page = 1;
memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, "%c%c%c", FF, CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );
}

memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, " [ BUMPER ASS'Y WORK ORDER ]%c%c%c%c%c%c", CR, LF, CR, LF, CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );

strDate.Format("%s-%s-%s", bhmcdate.Left(4), bhmcdate.Mid(4,2), bhmcdate.Mid(6,2) );

memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, " PAGE : %3d DATE : %s%c%c", page, strDate, CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );

memset(sbuf, 0x00, sizeof(sbuf));
// 123456789/123456789/123456789/123456789/123456789/1234567890123456789012345678901234567890
sprintf(sbuf, "========================================================%c%c", CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );

memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, " SEQ BODY NO BUMP ECOL T/L ENG BHMCTIME%c%c%c%c", CR, LF, CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );

memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, "========================================================%c%c", CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );
}

strTime.Format("%s:%s", bhmcdate.Mid(8,2), bhmcdate.Mid(10,2) );

memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, " %-4.4s %-10.10s %-4.4s %-3.3s %-4.4s %-4.4s %-5.5s%c%c%c%c",
seq, body, alc, ecol, tl, eng, strTime, CR, LF, CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );

memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, "--------------------------------------------------------%c%c", CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );

prt_ret = PrintStatus();
if ( prt_ret == 1 ) {
for ( i=0; i<3; i++ ) {// CKSEQTMP FLAG03 UPDATE
if ( CkseqtmpUpdate() == TRUE ) break;
else Sleep(1000);
}

cnt = cnt + 1;
if ( cnt > 7) { // 8 LINE PRINT
memset(sbuf, 0x00, sizeof(sbuf));
sprintf(sbuf, "%c%c%c", FF, CR, LF);
ret = send( sid, sbuf, strlen(sbuf), 0 );
page = page + 1;
cnt = 0;
}
}
else {
printf("Printer Status Check !!!\n");
}

Sleep(3000);
}

closesocket(sid);
WSACleanup();
Sqldb.Close();
return nRetCode;
}

//////////////////////////////////////////////////////////////////////
// DB OPEN
BOOL DbOpen()
{
if(Sqldb.Open("DSN=bjmole;UID=sa;PWD=bjmole")) {
Sqldb.m_bOpen = TRUE;
return TRUE;
}
else {
return FALSE;
}
}

/////////////////////////////////////////////////////////////////////////////
// CKSEQTMP FLAG03='0' SELECT
宝石花的养殖方法介绍 宝石花怎么养才长得好 不想让老婆看到我电脑里的一些东西怎么办? 桥好路由器停电后在来电老是获取lp 勒索病毒加密的文件如何恢复? TPU贴合膜多少钱 华为手机如何将输入法改为简体 肉丝炒金针菇做法 仓储冷链信息怎么申报 什么是药品冷链物流 浙江食品冷链运输多少钱 生物冷链具备什么资质 投诉检测站最有效办法 冢君的解释 304C型钢厂 真诚推荐 永浩供 乌鲁木齐球墨铸铁厂家排名 2023年抖音618好物节招商规则 2023年抖音好物年货节好物直播间玩法说明 抖音2023好物年货节玩法攻略 互联网内容平台——小红书的优势与困境 ...女儿房间的空调洗一下滤网,问一下格力小金豆空调面罩怎么打开... 传真机和打印机有什么区别? 传真纸和打印纸哪个好 传真纸和复印纸哪个好 虚拟语气as though 的问题 We didn't know his telephone number, otherwise we would have teleph... 我想问一下 错综复杂条件句 那怎么不能使用在这里 if i can do this... 好可怕...好可怕的梦... 线束组装线束组装工艺要求 汽车线束英语翻译 带表卡尺怎么读数 带表卡尺的使用方法 压力变送器数显表 公主连结凯露表情包大全 臭鼬表情包图片一览[多图] 单眼皮怎么使用双眼皮贴? 咬人的那特小的虫子叫什么 Bose音响怎么连接蓝牙 博士音响蓝牙怎么连接 夹了一片菜叶,上面摆了七根鱼刺和在碗里放了七个汤勺,每个汤勺里放一根... 微信聊天记录怎么才能彻底删除?通过这几种操作可以确保隐私安全!_百度... IDM IDMShellExt64.dll无法删除 - 删除使用中的(进程相关或残留)文件... 写关于活动的句子100字 社区团购运营思路和实战有啥收获写100字 备忘录在手机的哪里 刚性消费有哪些 中国经济快速增长的原因 什么是刚性消费 什么叫刚性增长 特别精辟的个性签名(非常经典的个性句子) 特别经典的个性签名(非常惊艳的个性句子) 文艺范十足的个性签名(温柔治愈的个性签名句子) wps文字怎么设置每页头和尾 27岁的女人需要补充哪些营养元素 如何连接sql server数据库 如何连接其他电脑SQL server中的数据库? 如何连接sqlserver数据库 怎么链接一个服务器上的mysql数据库 如何连接数据库sql sever 应用程序如何与数据库建立连接 云数据库怎么连接 怎么连接自己新建的数据库 数据库是怎样连接的 详细步骤 如何正确使用数据库连接 数据库怎么连接? 数据库怎么连接 如何连接数据库? 公众号运营有什么技巧吗?怎么快速开通原创功能? 微信公众服务号如何申请文章原创保护?不是订阅号 如何尽快开通微信公众号的原创保护功能? 微信公众平台文章怎么申请原创声明? 微信公众号如何申请原创 微信个人订阅号怎么开通原创功能 微信个人订阅号怎么开通原创功能? 怎么链接服务器上的数据库 sql怎样连接数据库? java怎么和数据库连接 怎么使用JAVA连接数据库? windows设备管理器在哪 电脑上的设备管理器在哪 电脑里的设备管理器在哪里 设备管理在哪里苹果 苹果手机里的设备管理在哪里? 苹果15.0.1系统设备管理在哪里 设备管理在哪找到? iPhone 12 Max的设备管理在哪里? 苹果x的设备管理在哪里 怎么打开icloud云盘 怎么打开苹果云盘里的文件 苹果手机怎么打开icloud云盘 怎么打开苹果icloud云盘 苹果6splus云盘在那里怎么打开? 苹果手机云端在哪里? 苹果手机的云端怎么打开?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com