本人初学数据库,所以很多东西都不懂,在csdn上找了一些代码
这个链接http://blog.csdn.net/wanshi131/article/details/1758790
然后呢我在
WM_INITDIALOG中执行了ODBCConnect()函数
函数体如下
BOOL ODBCConnect(CString strDBFile)
{
    CString strConnect;
    strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=sa;PWD=;DBQ=%s"), strDBFile);    CDatabase db;
    if(db.Open(NULL, FALSE, FALSE, strConnect))
    {
        //连接数据库成功
        CRecordset rs(&db);
        CString strSql;
        strSql = _T("select * from info");                                //SQL语句
        rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSql);                        //执行Sql语句(可添加 删除 查询等)
        if(rs.IsOpen())
        {
            CDBVariant variant;
            rs.MoveFirst();
            while(!rs.IsEOF())
            {
                //读取记录
                rs.GetFieldValue(_T("姓名"), variant);                rs.MoveNext();
            }
        }        db.Close();
        return TRUE;
    }    return FALSE;
}
编译0错误,1警告warning C4146: unary minus operator applied to unsigned type, result still unsigned
运行程序就出现XXX.EXE已经停止工作
 问题事件名称: APPCRASH
  应用程序名: XXX.exe
  应用程序版本: 0.0.0.0
  应用程序时间戳: 5213357c
  故障模块名称: KERNELBASE.dll
  故障模块版本: 6.1.7600.17206
  故障模块时间戳: 50e6605e
  异常代码: e06d7363
  异常偏移: 0000c41f
  OS 版本: 6.1.7600.2.0.0.256.1
  区域设置 ID: 2052
  其他信息 1: 0a9e
  其他信息 2: 0a9e372d3b4ad19135b953a78882e789
  其他信息 3: 0a9e
  其他信息 4: 0a9e372d3b4ad19135b953a78882e789
请问我哪里出错了吗?顺便问下,数据库链接用api方便还是mfc方便数据库odbcwindows编程vc

解决方案 »

  1.   

    1。
    你在控制面板里看一下数据源里有没有这个驱动:{MICROSOFT ACCESS DRIVER (*.mdb)};
    2。
    有没有sa这个数据库,如果有这个数据库,有没有这个数据库的数据源,你的连接字符串好象是SQL SERVER的连接字符串改的
        你直接查用ADO操作ACCESS数据库就行了,不同的数据库的连接字符串是有区别的
      

  2.   

    try catch 捕捉异常
    #include <afxdb.h>BOOL ODBCConnect(CString strDBFile)
    {
      CString strConnect;
      strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=admin;PWD=;DBQ=%s"), strDBFile);
      
      try
      {
        CDatabase db;
        if(db.Open(NULL, FALSE, FALSE, strConnect))
        {
          //连接数据库成功
          CRecordset rs(&db);
          CString strSql;
          strSql = _T("select * from info");                                //SQL语句
          rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSql);                        //执行Sql语句(可添加 删除 查询等)
          if(rs.IsOpen())
          {
            CDBVariant variant;
            rs.MoveFirst();
            while(!rs.IsEOF())
            {
              //读取记录
              rs.GetFieldValue(_T("姓名"), variant);
            
              rs.MoveNext();
            }        rs.Close();
          }
        
          db.Close();
          return TRUE;
        }
      }
      catch (CDBException* e)
      {
        e->ReportError();
        e->Delete();
      }
      
      return FALSE;
    }
      

  3.   


    结果显示在“调用SQLFetchScroll/SQLExtendedFetch之前,没有列被绑定”