我正在开发一个项目,要求我在MS Access表上执行插入查询。我一直在网上搜索,但似乎没有任何效果。任何帮助将不胜感激。此外,我必须为VS2008和Visual C ++ 6.0编写此代码。感谢
答案 0 :(得分:1)
您(很多)有很多选择:ADO/RDO,DAO,ODBC和OLE DB,仅举几例。 DAO正式被弃用。 ADO / RDO不是正式的,但MS似乎也不再关心它们了。然而,对于VC 6来说,过时是一个生活中的事实。我相信他们在VS 2008下至少在某种程度上仍然得到了支持,但他们不再包括任何帮助使用DAO的向导。
这基本上将OLE DB和ODBC作为您的第一个选择。 MS仍在积极支持和发展它们,其他人不太可能提供任何重大优势。
我应该补充一点,VC ++ 6.0提供了VS2008中用于编写使用数据库的应用程序的一些功能。您可能希望查看我在previous question中显示的内容以获得一些指导。
答案 1 :(得分:0)
使用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;
}