VC中用ODBC操作Access数据库
来源:互联网 发布:凤凰金融 人工智能网 编辑:程序博客网 时间:2024/05/01 13:53
const char szConnect[] = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=";
const char szDBName[] = "StudData.mdb";
void ODBCConnect(HWND);
void ODBCDisconnect(HWND);
void ODBCQuery(char *);
void ODBCQueryEnd(void);
void FetchResult(void);
void ODBCConnect(HWND hDlg)
{
try {
SQLRETURN sr;
sr = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) throw sr;
sr = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
throw sr;
}
sr = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hConn);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
throw sr;
}
strcpy(szConnectString, szConnect);
strcat(szConnectString, szDBName);
sr = SQLDriverConnect(hConn, hDlg, (unsigned char *)szConnectString, sizeof(szConnectString), (unsigned char *)ConnBuf, sizeof(ConnBuf), (short *)&StrLen, SQL_DRIVER_COMPLETE);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
throw sr;
}
}
catch (SQLRETURN) {
MessageBox(hDlg, "Database connection failed!", "Sorry", MB_OK | MB_ICONWARNING);
ExitProcess(0);
}
}
void ODBCDisconnect(HWND hDlg)
{
SQLDisconnect(hConn);
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
}
void ODBCQuery(char *query)
{
try {
SQLRETURN sr;
sr = SQLAllocHandle(SQL_HANDLE_STMT, hConn, &hStmt);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) throw sr;
sr = SQLExecDirect(hStmt, (unsigned char *)query, strlen(query));
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
throw sr;
}
}
catch (SQLRETURN) {
char errorbuf[128];
SQLError(hEnv, hConn, hStmt, NULL, NULL, (unsigned char *)errorbuf, sizeof(errorbuf), (short *)&StrLen);
MessageBox(NULL, "Database query failed!", "Sorry", MB_OK | MB_ICONWARNING);
MessageBox(NULL, errorbuf, "Sorry", MB_OK | MB_ICONWARNING);
}
}
void ODBCQueryEnd(void)
{
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
}
void FetchResult(void)
{
SQLRETURN sr;
LV_ITEM lvi;
int i, row;
for (i = 0; i < 10; ++i) SQLBindCol(hStmt, i + 1, SQL_C_CHAR, buf[i], sizeof(buf[i]), (long *)&StrLen);
for (row = 0; ; ++row) {
sr = SQLFetch(hStmt);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) break;
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.iItem = row;
lvi.iSubItem = 0;
lvi.pszText = buf[0];
SendMessage(hList, LVM_INSERTITEM, 0, (long)&lvi);
lvi.mask = LVIF_TEXT;
for (i = 1; i < 10; ++i) {
lvi.iSubItem = i;
lvi.pszText = buf[i];
SendMessage(hList, LVM_SETITEM, 0, (long)&lvi);
}
}
}
const char szDBName[] = "StudData.mdb";
void ODBCConnect(HWND);
void ODBCDisconnect(HWND);
void ODBCQuery(char *);
void ODBCQueryEnd(void);
void FetchResult(void);
void ODBCConnect(HWND hDlg)
{
try {
SQLRETURN sr;
sr = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) throw sr;
sr = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
throw sr;
}
sr = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hConn);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
throw sr;
}
strcpy(szConnectString, szConnect);
strcat(szConnectString, szDBName);
sr = SQLDriverConnect(hConn, hDlg, (unsigned char *)szConnectString, sizeof(szConnectString), (unsigned char *)ConnBuf, sizeof(ConnBuf), (short *)&StrLen, SQL_DRIVER_COMPLETE);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
throw sr;
}
}
catch (SQLRETURN) {
MessageBox(hDlg, "Database connection failed!", "Sorry", MB_OK | MB_ICONWARNING);
ExitProcess(0);
}
}
void ODBCDisconnect(HWND hDlg)
{
SQLDisconnect(hConn);
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
}
void ODBCQuery(char *query)
{
try {
SQLRETURN sr;
sr = SQLAllocHandle(SQL_HANDLE_STMT, hConn, &hStmt);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) throw sr;
sr = SQLExecDirect(hStmt, (unsigned char *)query, strlen(query));
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
throw sr;
}
}
catch (SQLRETURN) {
char errorbuf[128];
SQLError(hEnv, hConn, hStmt, NULL, NULL, (unsigned char *)errorbuf, sizeof(errorbuf), (short *)&StrLen);
MessageBox(NULL, "Database query failed!", "Sorry", MB_OK | MB_ICONWARNING);
MessageBox(NULL, errorbuf, "Sorry", MB_OK | MB_ICONWARNING);
}
}
void ODBCQueryEnd(void)
{
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
}
void FetchResult(void)
{
SQLRETURN sr;
LV_ITEM lvi;
int i, row;
for (i = 0; i < 10; ++i) SQLBindCol(hStmt, i + 1, SQL_C_CHAR, buf[i], sizeof(buf[i]), (long *)&StrLen);
for (row = 0; ; ++row) {
sr = SQLFetch(hStmt);
if (sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO) break;
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.iItem = row;
lvi.iSubItem = 0;
lvi.pszText = buf[0];
SendMessage(hList, LVM_INSERTITEM, 0, (long)&lvi);
lvi.mask = LVIF_TEXT;
for (i = 1; i < 10; ++i) {
lvi.iSubItem = i;
lvi.pszText = buf[i];
SendMessage(hList, LVM_SETITEM, 0, (long)&lvi);
}
}
}
- VC中用ODBC操作Access数据库
- Visual C++中用MFC ODBC操作Access数据库(1)
- VC ODBC 数据库操作
- VC++6.0中用ODBC连接mysql数据库
- VC++6.0中用ODBC连接mysql数据库
- VC++6.0中用ODBC连接mysql数据库
- VC之ODBC连接ACCESS数据库
- VC++6.0 中用 ADO 存取 Access 数据库
- php+odbc+access数据库操作函数
- MFC ODBC类 Access数据库的操作
- 用MFC ODBC操作Access数据库
- MFC+ODBC操作Access数据库pdf版
- 在VC++中用ODBC访问SQL Server数据库
- 在VC++中用ODBC访问SQL Server数据库
- VC下的数据库操作之--ODBC
- VC++ ADO、ODBC 数据库操作总结
- VC下的数据库操作之--ODBC .
- VC数据库操作样例(ODBC)
- 在1068天内成为一个独立的程序员
- Delphi語法筆記
- myeclipse 开发struts+hibernate(ppt) 教程
- 李宇春上了邮票 从此我们可以用上超级邮票了
- 基于角色管理的系统访问控制
- VC中用ODBC操作Access数据库
- 感兴趣的知识
- 关于用户角色权限的一点想法
- Microsoft Application Blocks for .NET
- 包在里面的爱情箴言
- 企业程序库(Enterprise Library))
- 网页建设案列(1)
- UNIX文件名置换
- visual studio.net已检测到指定的web服务器运行的不是asp.net 1.1 版错误