在网上找了很多的资料,但好像大多都是用C++语言连接数据库的,因为上面的头文件都是include没有include<studio.h>
可以用odbc
从微软官网下载odbc的sdk
里面有sql.h sqlext.h
假设有access数据库db.mdb,有表 table1,有字段 int id, nvarchar(10) name,用C语言odbc,将1,"zhangsan"插入
给你写了几行代码
#include <sql.h>
#include <sqlext.h>
int main() {
SQLHENV henv; //环境句柄
SQLHDBC hdbc; //连接句柄
SQLHSTMT hstmt; //语句句柄
SQLRETURN ret; //函数返回值
//1.初始化环境句柄
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
//2.初始化连接句柄
ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
ret = SQLConnect(hdbc, (SQLWCHAR *)L"", SQL_NTS, (SQLWCHAR *)L"", SQL_NTS, NULL, NULL);
//3.初始化语句句柄
ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//4.执行插入操作
SQLCHAR *sql = "INSERT INTO table1 (id, name) VALUES (1, 'zhangsan')";
ret = SQLExecDirectA(hstmt, sql, SQL_NTS);
//5.释放资源
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
使用相应的API来连接数据库,具体的API函数取决于使用的数据库类型。如Oracle的OCI(Oracle Call Interface)库#include <oci.h>,MySQL的C API(libmysqlclient)库#include <mysql.h>。
mysql安装目录下有头文件的
比如Task1.h改成
class Date;
class Task1 {
public:
Date d;
};
会编译错误,因为Date d定义了一个Date类型变量,编译器为d分配内存空间的时候必须知道d的大小,必须包含定义Date类的Date.h文件。
这是可以采用指针来代替
class Date;
class Task1 {
public:
Date *d;
};
指针的大小是固定的。在32位机上是4字节,64位机上是8字节。这时编译Task1的时候不需要Date的大小,所以和Date的定义无关。