关于数据库的疑惑?

zhouqing19871024 2009-02-20 09:26:34
我想问一下我们所写的C++程序是如何与数据库进行连接的,以前所写的程序每当在下次运行的时候上一次运行时所写的程序就没有了。。。。。给推荐个适合初学者关于数据库的书籍。。。。
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellowhwb 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhouqing19871024 的回复:]
不知道哪种数据库更好点啊?还想问下我们写的C++程序是如何与数据库进行连接的啊?
[/Quote]
MS SQL server比较易用
Oracle性能比较好,千万条数据也能运行,MS的性能差些
DB2性能也比较好,但是易用性方面不好
MySql是免费的,轻量级的
还有其它如sybase的等等,也有各自优缺点

连接数据库就用ADO或者ADO.net或者ODBC,lz可以试一下在桌面上新建一个文件,然后重命名为xx.udl,然后双击,就可以配置数据库连接了,配置好后用记事本打开这个文件,就可以得到连接字符串,这个字符串在使用ADO编程的时候,可以作为ADO的连接字符串使用,具体方法可以参考MSDN的例子!
waizqfor 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhouqing19871024 的回复:]
不知道哪种数据库更好点啊?还想问下我们写的C++程序是如何与数据库进行连接的啊?
[/Quote]
用SQL和Oracel比较多
学习SQL一般就够用了
给你个ODBC练SQL的

int MiMSSqlODBCConnect(const char *pInstName, const char *pUser,
const char *pPWD, SQLHENV &henv, SQLHDBC &hdbc)
{
SQLRETURN hRecode;
char szConnOption[1024];
SQLCHAR szConnStrOut[1024];
SQLSMALLINT cbConnStrOut = 0;
int nRet = WAVETOP_BACKUP_OK;

/* Allocate environment handle */
hRecode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (hRecode != SQL_SUCCESS && hRecode != SQL_SUCCESS_WITH_INFO) {
SLogErrorWrite(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, NULL,
"MiMSSqlConnect: SQLAllocHandle failed");
nRet = WAVETOP_BACKUP_INVALID_SYNTAX;
goto CLEANUP;
}

/* Set the ODBC version environment attribute */
hRecode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if (hRecode != SQL_SUCCESS &&
hRecode != SQL_SUCCESS_WITH_INFO) {
SLogErrorWrite(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, NULL,
"MiMSSqlConnect: SQLSetEnvAttr failed");
nRet = WAVETOP_BACKUP_INVALID_SYNTAX;
goto CLEANUP;
}

/* Allocate connection handle */
hRecode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (hRecode != SQL_SUCCESS && hRecode != SQL_SUCCESS_WITH_INFO) {
SLogErrorWrite(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, NULL,
"MiMSSqlConnect: SQLAllocHandle failed");
nRet = WAVETOP_BACKUP_INVALID_SYNTAX;
goto CLEANUP;
}

/* Set login timeout to 3 seconds. */
SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void*)3, 0);

/* connect string */
if (stricmp(pInstName, "MSSQLServer") == 0) {
_snprintf(szConnOption, sizeof(szConnOption), "DRIVER={SQL Server};"
"server=%s;uid=%s;pwd=%s",
g_MiGlobalConf.szHostIP, pUser, pPWD);
}
else {
_snprintf(szConnOption, sizeof(szConnOption), "DRIVER={SQL Server};"
"server=%s\\%s;uid=%s;pwd=%s",
g_MiGlobalConf.szHostIP, pInstName, pUser, pPWD);
}

/* Connect to data source */
hRecode = SQLDriverConnect(hdbc,
NULL,
(unsigned char *)szConnOption,
SQL_NTS,
szConnStrOut,
sizeof(szConnStrOut),
&cbConnStrOut,
SQL_DRIVER_NOPROMPT);

if (hRecode != SQL_SUCCESS && hRecode != SQL_SUCCESS_WITH_INFO) {
SLogErrorWrite(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, NULL,
"MiMSSqlConnect: SQLDriverConnect failed");
nRet = WAVETOP_BACKUP_INVALID_SYNTAX;
goto CLEANUP;
}

return nRet;

CLEANUP:
MiMSSqlODBCClear(henv, hdbc);
return nRet;
}

void MiMSSqlODBCClear(SQLHENV &henv, SQLHDBC &hdbc)
{
if (hdbc != SQL_NULL_HDBC) {
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
hdbc = SQL_NULL_HDBC;
}
if (henv != SQL_NULL_HENV) {
SQLFreeHandle(SQL_HANDLE_ENV, henv);
henv = SQL_NULL_HENV;
}
}

zhouqing19871024 2009-02-20
  • 打赏
  • 举报
回复
不知道哪种数据库更好点啊?还想问下我们写的C++程序是如何与数据库进行连接的啊?
yellowhwb 2009-02-20
  • 打赏
  • 举报
回复
windows下用ADO,ADO.net,ODBC,这些组件/库,在安装Visual studio是都安装好了,可以在MSDN里查找到例子!
《在Visual C++中用ADO进行数据库编程》http://www.lupaworld.com/?action-viewstutorial-itemid-9621
《Visual C++ ADO数据库编程入门》http://www.pcppc.cn/kaifa/Biancheng/kaifa_129676.html
waizqfor 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhouqing19871024 的帖子:]
我想问一下我们所写的C++程序是如何与数据库进行连接的,以前所写的程序每当在下次运行的时候上一次运行时所写的程序就没有了。。。。。给推荐个适合初学者关于数据库的书籍。。。。
[/Quote]
LZ想学什么数据库啊 SQL Oracel 还是等等啊

MySQL 4从入门到精通
MYSQL权威指南(原书第2版)
学SQL这2本书不错 别的数据库我就不熟悉了 呵呵










65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧