[英]Connect and Insert data into a MS Access table using C++
我正在开发一个需要我对 MS Access 表执行插入查询的项目。 我一直在网上到处搜索,但似乎没有任何效果。 任何帮助将不胜感激。 另外,我必须为 VS2008 和 Visual C++ 6.0 编写这个。 谢谢
您有(太多)选择: ADO/RDO 、 DAO 、 ODBC和OLE DB ,仅举几例。 DAO 已被正式弃用。 ADO/RDO 不是正式的,但 MS 似乎也不再关心它们了。 然而,在 VC 6 中,过时已成为现实。 我相信它们在 VS 2008 下至少在某种程度上仍然受到支持,但它们不再包括任何向导来帮助使用 DAO。
这基本上使 OLE DB 和 ODBC 成为您的首选。 MS 仍在积极支持和开发它们,而其他的无论如何都不太可能提供任何主要优势。
我应该补充一点,VC++ 6.0 提供了很多 VS2008 中缺少的用于编写使用数据库的应用程序的功能。 您可能想查看我在上一个问题中展示的内容以获得一些指导。
使用ODBC 。 连接数据库并执行 INSERT 查询的示例:
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <sqlext.h>
WCHAR szDSN[] = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:\\users.mdb";
int _tmain(int argc, _TCHAR* argv[])
{
HENV hEnv;
HDBC hDbc;
/* ODBC API return status */
RETCODE rc;
int iConnStrLength2Ptr;
WCHAR szConnStrOut[256];
WCHAR* query = L"INSERT INTO [Users] (name,surname) VALUES ('John','Smith');";
HSTMT hStmt;
/* Allocate an environment handle */
rc = SQLAllocEnv(&hEnv);
/* Allocate a connection handle */
rc = SQLAllocConnect(hEnv, &hDbc);
/* Connect to the database */
rc = SQLDriverConnect(hDbc, NULL, (WCHAR*)szDSN,
SQL_NTS, (WCHAR*)szConnStrOut,
255, (SQLSMALLINT*)&iConnStrLength2Ptr, SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(rc))
{
wprintf(L"Successfully connected to database. Data source name: \n %s\n",
szConnStrOut);
/* Prepare SQL query */
wprintf(L"SQL query:\n %s\n", query);
rc = SQLAllocStmt(hDbc,&hStmt);
rc = SQLPrepare(hStmt, query, SQL_NTS);
/* Excecute the query */
rc = SQLExecute(hStmt);
if (SQL_SUCCEEDED(rc))
{
wprintf(L"SQL Success\n");
}
else{
wprintf(L"SQL Failed\n");
}
}
else
{
wprintf(L"Couldn't connect to %s.\n",szDSN);
}
/* Disconnect and free up allocated handles */
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
getchar();
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.