MFC中怎样ODBC将数据库连接到对话框程序
未发现数据源名称并且未指定默认的驱动刚刚接触数据库……什么都不知道……建立一个基于对话框的程序……在控制面板中添加了一个名为sjk的数据库……建立了三个表……,不过基于对...
未发现数据源名称并且未指定默认的驱动
刚刚接触数据库……什么都不知道……建立一个基于对话框的程序……在控制面板中添加了一个名为 sjk 的数据库……建立了三个表……,不过基于对话框的程序按钮什么的都设置好了,就是不知道怎么把它和之前间的数据源连接起来啊!
求高手帮帮忙啊!!!!
运行提示 未发现数据源名称并且未指定默认的驱动程序
是什么原因?
怎样解决?
谢谢指导………… 展开
刚刚接触数据库……什么都不知道……建立一个基于对话框的程序……在控制面板中添加了一个名为 sjk 的数据库……建立了三个表……,不过基于对话框的程序按钮什么的都设置好了,就是不知道怎么把它和之前间的数据源连接起来啊!
求高手帮帮忙啊!!!!
运行提示 未发现数据源名称并且未指定默认的驱动程序
是什么原因?
怎样解决?
谢谢指导………… 展开
展开全部
“未发现数据源名称并且未指定默认的驱动程序”
这个问题我也遇到过,但是在运行过一次证明能连上数据库之后出现的。这说明你的ODBC连接时静态的,就是每次程序在另一台电脑上运行时就需要重新连一下ODBC数据库。
如果你的程序没有运行过一次就报错,问题可能出现在两点:
1、创建ODBC数据源
你可以按照如下方法重新创建一次。单击开始—>设置->控制面板->管理工具,在其中打开“数据源”(ODBC)在找到ODBC之后会弹出一个“ODBC数据源管理器”对话框,添加数据源-〉选择数据源的驱动程序。这个软件的数据库使用的是Access,所以选择Micrsoft Access Driver(*.mdb )单击“完成”按钮,在弹出的新对话框中填入你的数据源名,单击“选择”按钮,在弹出的的“选择数据库”对话框中选择你所建的数据库(找到数据库所保存的位置),单击“确定”按钮返回,然后单击“确定”,创建ODBC数据源完成。(注意,这里创建的数据源是Access的)。
2、是SQL语言
首先在StdAfx.h 中添加如下代码:
#include <odbcinst.h>//ODBC数据库API头文件
#include <afxdb.h>
然后在CXXAPP::InitInstance()中加添
SQLConfigDataSource(NULL,ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)",
"DSN=数据源名称\0"
"Description=Hotel\0"
"FileType=Access\0"
"DBQ=.\\数据源名称.mdb\0"
);
按照这种方法你再试试,注意创建数据源时的数据源名称要与SQL语句中的数据源名称要一致。我知道的就这么多,希望能帮上你。
这个问题我也遇到过,但是在运行过一次证明能连上数据库之后出现的。这说明你的ODBC连接时静态的,就是每次程序在另一台电脑上运行时就需要重新连一下ODBC数据库。
如果你的程序没有运行过一次就报错,问题可能出现在两点:
1、创建ODBC数据源
你可以按照如下方法重新创建一次。单击开始—>设置->控制面板->管理工具,在其中打开“数据源”(ODBC)在找到ODBC之后会弹出一个“ODBC数据源管理器”对话框,添加数据源-〉选择数据源的驱动程序。这个软件的数据库使用的是Access,所以选择Micrsoft Access Driver(*.mdb )单击“完成”按钮,在弹出的新对话框中填入你的数据源名,单击“选择”按钮,在弹出的的“选择数据库”对话框中选择你所建的数据库(找到数据库所保存的位置),单击“确定”按钮返回,然后单击“确定”,创建ODBC数据源完成。(注意,这里创建的数据源是Access的)。
2、是SQL语言
首先在StdAfx.h 中添加如下代码:
#include <odbcinst.h>//ODBC数据库API头文件
#include <afxdb.h>
然后在CXXAPP::InitInstance()中加添
SQLConfigDataSource(NULL,ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)",
"DSN=数据源名称\0"
"Description=Hotel\0"
"FileType=Access\0"
"DBQ=.\\数据源名称.mdb\0"
);
按照这种方法你再试试,注意创建数据源时的数据源名称要与SQL语句中的数据源名称要一致。我知道的就这么多,希望能帮上你。
展开全部
void XXX::XXXX()
{
CString strSql;
CString strName;
CString strDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
CString strDsn;
CString strFile = "D:\\Vm.mdb";//数据库路径
strDsn.Format("ODBC;DRIVER={%s};UID=sa;PWD=;DBQ=%s",strDriver,strFile);
TRY
{
CDatabase m_db;
m_db.Open(NULL,false,false,strDsn);
CString strConnect = m_db.GetConnect();
CRecordset rs(&m_db);
szInstallName = "'" + szInstallName + "'";
strSql = "select * from VMVersions where IRPFile=" + szInstallName;
rs.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
CString szName;
rs.GetFieldValue("ID",strName);
szName = szName +'\n' + strName;
rs.MoveNext();
m_db.Close();
CDatabase m_db1;
m_db1.Open(NULL,false,false,strDsn);
strConnect = m_db1.GetConnect();
CRecordset rs1(&m_db1);
szInstallName = "'" + szInstallName + "'";
strSql = "SELECT * FROM VMCommitVersionNum WHERE VerId = " + strName;
rs1.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
int nItem, i=0;
CString szTemp = "";
while(!rs1.IsEOF())
{
rs1.GetFieldValue("VersionNum", strName);
nItem = ListCtrl->InsertItem(i, strName);
szTemp = CompareText(szTemp, strName);
rs1.MoveNext();
i++;
}
m_db1.Close();
}
CATCH(CDBException, e)
{
AfxMessageBox("Database Error:" + e->m_strError);
}
END_CATCH;
}
//这是一个简单的使用MFC查询数据库的例子,你可以参照下这个的用法
{
CString strSql;
CString strName;
CString strDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
CString strDsn;
CString strFile = "D:\\Vm.mdb";//数据库路径
strDsn.Format("ODBC;DRIVER={%s};UID=sa;PWD=;DBQ=%s",strDriver,strFile);
TRY
{
CDatabase m_db;
m_db.Open(NULL,false,false,strDsn);
CString strConnect = m_db.GetConnect();
CRecordset rs(&m_db);
szInstallName = "'" + szInstallName + "'";
strSql = "select * from VMVersions where IRPFile=" + szInstallName;
rs.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
CString szName;
rs.GetFieldValue("ID",strName);
szName = szName +'\n' + strName;
rs.MoveNext();
m_db.Close();
CDatabase m_db1;
m_db1.Open(NULL,false,false,strDsn);
strConnect = m_db1.GetConnect();
CRecordset rs1(&m_db1);
szInstallName = "'" + szInstallName + "'";
strSql = "SELECT * FROM VMCommitVersionNum WHERE VerId = " + strName;
rs1.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
int nItem, i=0;
CString szTemp = "";
while(!rs1.IsEOF())
{
rs1.GetFieldValue("VersionNum", strName);
nItem = ListCtrl->InsertItem(i, strName);
szTemp = CompareText(szTemp, strName);
rs1.MoveNext();
i++;
}
m_db1.Close();
}
CATCH(CDBException, e)
{
AfxMessageBox("Database Error:" + e->m_strError);
}
END_CATCH;
}
//这是一个简单的使用MFC查询数据库的例子,你可以参照下这个的用法
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询