ODBC接口函数连接数据库
1.程序展示
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <stdio.h>
#include <string.h>
int main()
{
const char *dbname = "数据源"; //数据源
const char *username = "用户名"; //用户名
const char *password = "密码"; //密码
SQLHENV henv = SQL_NULL_HENV; //环境句柄
SQLHDBC hdbc = SQL_NULL_HDBC; //连接句柄
SQLHSTMT hstmt = SQL_NULL_HSTMT; //语句句柄
SQLRETURN retcode; //数据库操作返回结果
char pgsql_str[2048]={“要执行的数据库语句”}; //数据库操作语句
int pgsql_len;
/* 连接操作 */
//环境句柄(SQL_HANDLE_ENV分配环境句柄)
retcode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
//连接句柄 ( SQL_HANDLE_DBC分配连接句柄)
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
retcode = SQLConnect(hdbc,(SQLCHAR *)dbname,(SQLSMALLINT)strlen(dbname),(SQLCHAR *)username, (SQLSMALLINT)strlen(username), (SQLCHAR *)password, (SQLSMALLINT)strlen(password)); //连接
if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
{
printf("-- Connection to database failed\n");
return -1;
}
/* 数据库语句执行操作 */
pgsql_len = strlen(pgsql_str);
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); //(SQL_HANDLE_STMT分配语句句柄)
retcode = SQLExecDirect(hstmt, (SQLCHAR *)pgsql_str, pgsql_len); //执行数据库插入语句
if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
{
printf("-- sql exec failed\n");
}
/* 关闭连接操作 */
//关闭并释放语句句柄
SQLCloseCursor(hstmt);
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);//断开与数据源的连接
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);//释放连接句柄
SQLFreeHandle(SQL_HANDLE_ENV, henv); //释放环境句柄
}
2.配置文件
2.1.odbc配置文件位置
默认在/etc/odbc.ini处,数据源名称等可在其中配置
2.2.odbc.ini配置解析(针对postgre数据库的)
[ODBC Data Sources] --数据源名称,可自己取
Description= Test to Postgres --Postgres数据库
Driver= PostgreSQL Unicode
Trace= Yes
TraceFile= sql.log
Database=testdb --连接的数据库名
Servername= 127.0.0.1 --连接的数据库ip
UserName= username --数据库用户名
Port= 5432 --默认端口
Protocol= 6.4
ReadOnly= No
RowVersioning= No
ShowSystemTables= No
ShowOidColumn= No
FakeOidIndex= No
ConnSettings=
MaxVarcharSize= 8096
Password=12345678 --数据库密码
3.其他数据库配置方法
3.1.MySQL
[MySQL-test]
Description = MySQL test database
Trace = Off
TraceFile = stderr
Driver = MySQL
SERVER = 192.168.1.26
USER = pharvey
PASSWORD =
PORT = 3306
DATABASE = test
3.2Mini SQL
[Mini SQL]
Description = MiniSQL
Driver = MiniSQL
Trace = No
TraceFile =
Host = localhost
Database =
ConfigFile =