vc++里面的:
AfxEnableControlContainer();
AfxOleInit();///初始化COM库
////////////连接数据库//////////////
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);///连接数据库
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; }
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
AfxEnableControlContainer();
AfxOleInit();///初始化COM库
////////////连接数据库//////////////
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);///连接数据库
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; }
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
#include <windows.h>
#include <sqlfront.h>
#include <sqldb.h>int error_handler(DBPROCESS *, INT, INT, INT, LPCSTR,LPCSTR);
int message_handler(DBPROCESS *, DBINT, INT, INT, LPCSTR, LPCSTR, LPCSTR,DBUSMALLINT);int main()
{
DBPROCESS *dbproc;
LOGINREC *login;
DBCHAR title[128];
DBCHAR price[128];
DBCHAR pub_id[128]; //安装错误和消息处理函数
dberrhandle (error_handler);
dbmsghandle (message_handler);
//初始化DB-Library环境,并显示DB-Library的版本号
printf("%s\n",dbinit());
//设置连接信息
login = dblogin ();
DBSETLUSER (login, "sa");
DBSETLPWD (login, "");
DBSETLAPP (login, "DBDemo");
//建立与SQL服务器的连接
if ((dbproc = dbopen (login, "YWJ"))==NULL)return 0;
//释放login 结构
dbfreelogin (login);
//向DBPROCESS命令缓冲区添加SQL语句
dbcmd (dbproc,"SELECT title,price,pub_id FROM pubs..titles");
dbcmd (dbproc," WHERE type = 'business'"); //向SQL 传递SQL语句,进行检索
dbsqlexec (dbproc);
//处理检索结果
if (dbresults (dbproc) == SUCCEED)
{
//建立结果列与应用程序变量的关系
dbbind (dbproc, 1, NTBSTRINGBIND, (DBINT)0,(LPBYTE)title);
dbbind (dbproc, 2, NTBSTRINGBIND, (DBINT)0,(LPBYTE)price);
dbbind (dbproc, 3, NTBSTRINGBIND, (DBINT)0,(LPBYTE)pub_id);
printf("business 类图书:\n");
//循环读取每一行并显示
while (dbnextrow (dbproc) != NO_MORE_ROWS)
printf ("** %-55s %-8s %-8s \n",title,price,pub_id);
}
//关闭SQL连接
dbexit();
return 0;
}//定义错误处理函数
int error_handler(DBPROCESS *dbproc, INT severity, INT dberr, INT oserr, LPCSTR dberrstr,LPCSTR oserrstr)
{
printf( "DB-Library 错误: %i, %s\n",dberr,dberrstr);
if (oserr != DBNOERR)
printf( "操作系统 错误: %i, %s\n",oserr,oserrstr);
return (INT_CANCEL);}int message_handler(DBPROCESS *dbproc, DBINT msgno, INT msgstate, INT severity, LPCSTR msgtext, LPCSTR srvname, LPCSTR procname,DBUSMALLINT line)
{
printf("SQL Server消息号: %ld,状态: %d,级别: %d:\n\t%s\n",msgno,msgstate,severity,msgtext); //printf("SQL Server消息号: %ld,状态: %d,级别: %d:\n\t%s\n",msgno,msgstate,severity,msgtext);
return 0;
}
这些包是安装了什幺有的,还是系统自带,你能否留下QQ,我真的很急!
--------------------Configuration: test - Win32 Debug--------------------
Linking...
test.obj : error LNK2001: unresolved external symbol _dbexit
test.obj : error LNK2001: unresolved external symbol _dbnextrow
test.obj : error LNK2001: unresolved external symbol _dbbind
test.obj : error LNK2001: unresolved external symbol _dbresults
test.obj : error LNK2001: unresolved external symbol _dbsqlexec
test.obj : error LNK2001: unresolved external symbol _dbcmd
test.obj : error LNK2001: unresolved external symbol _dbfreelogin
test.obj : error LNK2001: unresolved external symbol _dbopen
test.obj : error LNK2001: unresolved external symbol _dbsetlname
test.obj : error LNK2001: unresolved external symbol _dblogin
test.obj : error LNK2001: unresolved external symbol _dbinit
test.obj : error LNK2001: unresolved external symbol _dbmsghandle
test.obj : error LNK2001: unresolved external symbol _dberrhandle
Debug/test.exe : fatal error LNK1120: 13 unresolved externals
Error executing link.exe.test.exe - 14 error(s), 0 warning(s)
如果追求效率,用SDK。SqlServer,oracle都附带了SDK包,ANSI C的。SqlServer的SDK包叫DB Library For C,在MSDN里有详细的讲解。
我在一个每十分钟处理2万条记录的项目(ANSI C实现)里用它替代ODBC,效率成倍提高。