我正在开发一个需要我对 MS Access 表执行插入查询的项目。我一直在网上到处搜索,但似乎没有任何效果。任何帮助将不胜感激。另外,我必须为 VS2008 和 Visual C++ 6.0 编写这个。谢谢
问问题
5543 次
2 回答
1
您有(太多)很多选择:ADO/RDO、DAO、ODBC和OLE DB,仅举几例。DAO 已被正式弃用。ADO/RDO 不是正式的,但 MS 似乎也不再关心它们了。然而,在 VC 6 中,过时已成为现实。我相信它们在 VS 2008 下至少在某种程度上仍然受到支持,但它们不再包括任何向导来帮助使用 DAO。
这基本上使 OLE DB 和 ODBC 成为您的首选。MS 仍在积极支持和开发它们,而其他的无论如何都不太可能提供任何主要优势。
我应该补充一点,VC++ 6.0 提供了很多 VS2008 中缺少的用于编写使用数据库的应用程序的功能。您可能想查看我在上一个问题中展示的内容以获得一些指导。
于 2011-06-28T17:13:52.253 回答
1
使用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;
}
于 2018-08-03T10:03:33.990 回答