//动态库和普通进程调用数据库方式没有任何区别,以下的程序兼容WINDOWS ODBC数据库连接和LINUX MYSQL连接,是跨平台的。
#ifdef WIN32
#include <windowsh>
#include <odbcinsth>
#include <sqlexth>
#else
#include <mysqlh>
#include <unistdh>
#define SQLHANDLE static MYSQL
#endif
#include <stdargh>
#include <stdlibh>
#include <stdioh>
#include <stringh>
SQLHANDLE hDBEnv, hDBC;
int DB_Open(char dbcn, char usr, char pwd)
{
int r;
#ifdef WIN32
r = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hDBEnv);
if(r) return 0;
r = SQLSetEnvAttr(hDBEnv,SQL_ATTR_ODBC_VERSION,
(void)SQL_OV_ODBC3,0);
if(r) return 0;
r = SQLAllocHandle(SQL_HANDLE_DBC, hDBEnv, &hDBC);
if(r) return 0;
r = SQLConnect(hDBC,
(unsigned char )dbcn, strlen(dbcn),
(unsigned char )usr, strlen(usr),
(unsigned char )pwd, strlen(pwd));
return r==SQL_SUCCESS || r==SQL_SUCCESS_WITH_INFO;
#else
mysql_init(&hDBC);
MYSQL rx = mysql_real_connect(
&hDBC, dbcn, usr, pwd, NULL, 0, NULL, 0);
if(!rx) return 0;
return 1;
#endif
}//end DB_Open
int DB_Exec(char sql)
{
#ifdef WIN32
SQLHANDLE hStatement = NULL;
SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);
SQLExecDirect(hStatement,(unsigned char )sql, strlen(sql));
SQLCloseCursor(hStatement);
SQLFreeHandle(SQL_HANDLE_STMT, hStatement);
hStatement = NULL;
#else
mysql_real_query (&hDBC, sql, strlen(sql));
#endif
return 1;
}//end DB_Exec
int DB_Close(void)
{
#ifdef WIN32
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hDBEnv);
#else
mysql_close(&hDBC);
#endif
return 1;
}//DB_Close()
#ifndef WIN32
typedef struct tagMySQLRecordset {
MYSQL_RES hRecord;
void row;
int size;
int cols;
} MYSQLRecordset;
数据库中可能存在多个Database,如默认的model,master等 在图形化查询界面中,你可以在快捷菜单栏中选择要 *** 作的数据库,也可以使用命令进行 *** 作 楼上的yiyishuitian已经给出了答案 举个栗子: use master; go select from dbospt_values;
以上就是关于办公软件数据库的概念,作用和优点分别是什么(数据库在办公自动化中的应用包括哪几个方面)全部的内容,包括:办公软件数据库的概念,作用和优点分别是什么(数据库在办公自动化中的应用包括哪几个方面)、关于DELPHI动态数据库、分析access优缺点,适用于什么情况等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)