odbc创建动态数据源的问题

法尔我给他 2009-04-06 03:43:23
bool CreateData(void)
{
CString szPath;
::GetModuleFileName(NULL,szPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer();
int nPos;
nPos = szPath.ReverseFind('\\');
szPath = szPath.Left(nPos);
CString szFile = szPath + "\\bookdata.mdb";//在当前路径下创建数据库



CString szAtr;
szAtr.Format(_T("DSN = bookdata!DBQ = %s!DEFAULTDIR = %s!!"),szFile,szPath);//sqlconfigdatasource函数的第四个参数lpszAttributes


HANDLE hFind;
WIN32_FIND_DATA wfd;
hFind = ::FindFirstFile(szFile,&wfd);//查找是否存在同名数据库
if(hFind == INVALID_HANDLE_VALUE)
{
int nlen;
nlen = szAtr.GetLength();


for(int i = 0;i<nlen;i++)
{
if(szAtr.GetAt(i) == '!')
szAtr.SetAt (i,'\0') ;
}
bool fCreated;
fCreated = SQLConfigDataSource(NULL,
ODBC_ADD_DSN,
_T("Microsoft Access Driver(*mdb)\0"),
(LPCWSTR)szAtr);
::FindClose (&hFind);
return fCreated;
}
return false;

}
总是失败,是什么问题?谢谢
...全文
140 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
法尔我给他 2009-04-10
  • 打赏
  • 举报
回复
请问如何在visual studio中的vc的mfc项目中使用sql语句呢?是用嵌入式sql吗?这关于这个的教材吗,谢谢
AlexChan1981 2009-04-10
  • 打赏
  • 举报
回复
ODBC是数据源,起连接数据库的作用,要创建数据库的话需要SQL语句 Create database
法尔我给他 2009-04-10
  • 打赏
  • 举报
回复
czx1234567你好,谢谢你的回答!有个问题:注册数据源成功了,可是我的数据库怎么没创建出来呢?
czx1234567 2009-04-09
  • 打赏
  • 举报
回复
借楼主编码,稍加修改后注册数据源成功:
CString szPath;
GetModuleFileName(NULL,szPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer ();
int nPos;
nPos = szPath.ReverseFind ('\\');
szPath = szPath.Left (nPos);
CString szFile = szPath + "\\bookdata.mdb";
CString szAtr;
szAtr.Format(_T("DSN=bookdata!DBQ=%s!DEFAULTDIR=%s!!"),szFile,szPath);
int nlen;
nlen = szAtr.GetLength();
for(int i = 0;i <nlen;i++)
{
if(szAtr.GetAt(i) == '!')
szAtr.SetAt (i,'\0') ;
}
if (FALSE == SQLConfigDataSource(NULL, ODBC_ADD_DSN, _T("Microsoft Access Driver (*.mdb)\0"), (LPCWSTR)szAtr))
AfxMessageBox(_T("数据源配置失败,确认数据库bookdata.mdb是否在当前路径下!"));
czx1234567 2009-04-08
  • 打赏
  • 举报
回复
我也遇到同样问题正待解决,好象关键在 “(LPCWSTR)szAtr”不能正确编译成文件路径+文件名,我将“(LPCWSTR)szAtr”显示在消息框中,显示出来的代码是乱码!
法尔我给他 2009-04-07
  • 打赏
  • 举报
回复
ado的动态创建我也在看,现在就是想用odbc来创建数据库!大大知道怎么创建吗?谢谢!
  • 打赏
  • 举报
回复
数据库的动态连接:(需要不少DLL支持的;大概有14个左右);
AfxOleInit();///初始化COM库

HRESULT hr;
hr=m_pConnection.CreateInstance("ADODB.Connection");
if (FAILED(hr)) return FALSE;
try
{
hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=my.mdb","","",adModeUnknown);
}
catch (_com_error &e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
  • 打赏
  • 举报
回复
你弄错了;你查一下有关ADO动态联接数据库的问题;也就二三行代码;
法尔我给他 2009-04-07
  • 打赏
  • 举报
回复
在visual studio 2008上怎么用odbc动态的创建access 的mdb数据库,求个正确运行的程序。
或者具体步骤也行呀,本人小菜,大大们说的具体点!
需要什么头文件,加载什么lib,以及函数的正确参数,给个能用的例子吧,找了好久没有一个是能运行的起来的!
baosanr 2009-04-07
  • 打赏
  • 举报
回复
::SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", "DSN=MS Access Database");

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧