odbc如何将控制台输入的数据库格式的数据进行数据插入
时间: 2024-04-07 08:28:43 浏览: 17
使用ODBC操作数据库的步骤如下:
1. 连接数据库
2. 构造SQL语句
3. 执行SQL语句
4. 关闭数据库连接
下面是一个使用ODBC连接数据库并插入数据的代码示例:
```
#include <stdio.h>
#include <stdbool.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
int main() {
// 定义变量
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLRETURN ret;
// 分配环境句柄
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("Failed to allocate environment handle.\n");
return 1;
}
// 设置ODBC版本
ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("Failed to set ODBC version.\n");
return 1;
}
// 分配连接句柄
ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("Failed to allocate connection handle.\n");
return 1;
}
// 连接数据库
ret = SQLConnect(dbc, (SQLCHAR*)"database_name", SQL_NTS, (SQLCHAR*)"username", SQL_NTS, (SQLCHAR*)"password", SQL_NTS);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("Failed to connect to database.\n");
return 1;
}
// 分配语句句柄
ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("Failed to allocate statement handle.\n");
return 1;
}
// 获取控制台输入的数据
char name[50], gender[10];
int age;
printf("Please enter name, age, gender: ");
scanf("%s %d %s", name, &age, gender);
// 构造SQL语句
char sql[100];
sprintf(sql, "INSERT INTO users (name, age, gender) VALUES ('%s', %d, '%s')", name, age, gender);
// 执行SQL语句
ret = SQLExecDirect(stmt, (SQLCHAR*)sql, SQL_NTS);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("Failed to execute SQL statement.\n");
return 1;
}
// 关闭语句句柄
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
// 断开数据库连接
SQLDisconnect(dbc);
// 释放连接句柄
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
// 释放环境句柄
SQLFreeHandle(SQL_HANDLE_ENV, env);
return 0;
}
```
其中,SQLAllocHandle()函数用于分配句柄,SQLSetEnvAttr()函数用于设置ODBC版本,SQLConnect()函数用于连接数据库,SQLExecDirect()函数用于执行SQL语句,SQLFreeHandle()函数用于释放句柄。在代码中,我们使用sprintf()函数构造了一个SQL语句,将输入的数据插入到名为“users”的表中。最后,我们关闭了与数据库的连接。
需要注意的是,此代码示例假定你已经正确安装了ODBC驱动程序,并且已经在ODBC数据源管理器中配置了相应的数据源。并且,实际情况中,还需要考虑安全性和数据有效性等问题。