c ado 数组 存入数据库
时间: 2023-09-06 18:03:37 浏览: 98
在C语言中,可以使用ADO对象来将数组存入数据库。ADO(ActiveX Data Objects)是一种用于访问数据库的技术,它提供了一组对象和方法,可以轻松地连接数据库、执行SQL语句并且将数据存储到数据库中。
首先,需要创建和初始化一个ADO对象。可以使用以下的代码片段:
```c
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqlext.h>
int main(){
SQLHENV henv;
SQLHDBC hdbc;
SQLRETURN ret;
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
/* 连接数据库 */
ret = SQLDriverConnect(hdbc, NULL, "DRIVER={MySQL ODBC 8.0 Unicode Driver};SERVER=localhost;DATABASE=test;USER=root;PASSWORD=123456;", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (SQL_SUCCEEDED(ret)) {
printf("Connected!\n");
/* 创建表格 */
ret = SQLExecDirect(hstmt, "CREATE TABLE IF NOT EXISTS test_table (id INT, name VARCHAR(255));", SQL_NTS);
if (SQL_SUCCEEDED(ret)) {
printf("Table created!\n");
/* 插入数组数据 */
int arr[5] = {1, 2, 3, 4, 5};
SQLCHAR query[256];
for (int i = 0; i < 5; i++) {
sprintf_s(query, "INSERT INTO test_table (id) VALUES (%d);", arr[i]);
ret = SQLExecDirect(hstmt, query, SQL_NTS);
if (SQL_FAILED(ret)) {
printf("Insert failed!\n");
}
}
printf("Data inserted!\n");
}
}
/* 关闭连接和释放资源 */
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
```
在这个例子中,我们连接了一个名为"test"的数据库,创建了一个名为"test_table"的表格,并将数组"arr"中的数据插入到了表格中。连接数据库和创建表格的SQL语句都使用了`SQLExecDirect`函数来执行。
对于每一个数组元素,我们使用`sprintf_s`函数将其插入到SQL语句中,然后使用`SQLExecDirect`函数执行插入操作。如果插入失败,会打印"Insert failed!",否则会打印"Data inserted!"。
需要注意的是,以上代码仅供参考,实际上还需要进行错误检查和处理,以确保操作的成功和稳定性。此外,还需要根据实际情况来选择和配置合适的数据库驱动。
阅读全文