通过ODBC API实现对数据库的访问
2008-08-09 19:26:16 来源:WEB开发网BOOL CDbOperator::GetUserIdFromObj_User(int arrUserId[], int& nUserCount)
{
int nUserId = 0;
nUserCount = 0;
CString strSQL;
SQLHSTMT hstmt ;
SQLRETURN retcode;
SQLINTEGER cbLenth = 0 ;
strSQL = "SELECT User_Iden FROM Obj_User";
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
SQLBindCol(hstmt, 1, SQL_C_ULONG, (SQLPOINTER)&nUserId, sizeof(nUserId), &cbLenth);
if (SQLExecDirect(hstmt, (SQLCHAR*)(LPCTSTR)strSQL, SQL_NTS) == SQL_ERROR)
{
AfxMessageBox("数据操作失败!") ;
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
return FALSE;
}
while((SQLFetch(hstmt) == SQL_SUCCESS) || (SQLFetch(hstmt) == SQL_SUCCESS_WITH_INFO))
{
arrUserId[nUserCount] = nUserId;
nUserCount++;
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
returnTRUE;
}
else
{
AfxMessageBox("数据操作失败!") ;
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
return FALSE;
}
return TRUE;
}
注意:在SQL SERVER数据库中,master数据库是占有统治地位的,它纪录了所有数据库的创建信息。故在创建一个新的数据库之前可以通过连接matser数据库,并在master数据库中执行创建数据库的SQL语句来创建一个新的数据库。为了防止数据库的重复创建,必须在创建之前判断你所创建的数据库是否已经存在。如果存在的话,则退出;否则创建新的数据库。Matster数据库中其中有张表sysdatabases纪录了所有已经创建的数据库名。如果能够在该表中查询出该名字的数据库,说明数据库已经创建;否则,不创建数据库。同时,Master数据库中有一张表sysobjects纪录了所有数据库的所有表名。所以可以通过查询这个表来判断你所创建的表是否已经存在。掌握了以上几个要素,就可以动态创建数据库。很神奇吧?
若想对ODBC API访问数据进一步了解,大家可以看看我的例子(例子仅仅是个模板,并没有优化代码)。其中,程序执行后,输入用户zhengyu和密码4352729后即可创建完数据库,就这么方便。大家也可以给我发邮件跟我交流。
执行结果如下:
QQ:181484408
更多精彩
赞助商链接