您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:6 来源:vckbase.com

对《一个完善的ODBC数据库程序》一文的补充


作者:刘永超

下载源代码
逆@风@者

编者注:本文是作者对不久前发布的一篇文章的补充,在阅读本文之前,最好先看一下原来的文章:“一个完善的ODBC数据库程序”。
从方便用户的角度考虑,应该在程序中采用动态创建数据源。经过编者的提醒,我查找了一些资料,还好最终实现了。代码如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

//取的数据库的路径(参考徐景周的〈直接通过DAO读写Access文件〉

	CString sPath;

	GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH 1),MAX_PATH);

	sPath.ReleaseBuffer ();

	int nPos;

	nPos=sPath.ReverseFind (''\\'');

	sPath=sPath.Left (nPos);

	CString lpszFile = sPath   "\\student.mdb";

//在用SQLConfigDataSource()函数时,有一个需要注意的地方,因为在函数中用到Cstring

//变量,由于本身是字符串,最后有\0,所以用下面的方法处理:

	       char* szDesc;

			int mlen;

			szDesc=new char[256];

			sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","not",lpszFile,sPath);

//not为数据源名你可以改动。但必须与CString CLhwySet::GetDefaultConnect()

//{

//	return _T("ODBC;DSN=not");

//}

//中的数据源名保持一致,你可以改变一下。





			mlen = strlen(szDesc);

			  for (int i=0; i<mlen; i  )

			  {

				if (szDesc[i] == ''?'')

				  szDesc[i] = ''\0'';

			  }

//SQLConfigDataSource()函数用法参考:《用Visual C  程序实现设置ODBC数据源 》 下面//两种用法都不成功

// if(FALSE==SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0","DSN=AbbDBQ=lpszFileDEFAULTDIR=sPath\0"))

// if(FALSE==SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0","DSN=Abb\0DBQ=lpszFile\0DEFAULTDIR=sPath\0\0"))



if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))

				AfxMessageBox("Failed");

				

	return 0;

}    
需要注意的两点:
1.在开头需要包含头文件:#include <odbcinst.h>。
2.Student.mdb 必须和lhwy应用程序在同一目录下。

你还可以做一个让用户从一个对话框向程序输入ODBC数据源名、以及通过浏滥文件目录选择所需数据库,试一下。但一定注意CString的处理方法。


相关文章

Python 的数据库操作
类似 MSN 信息发送框的制作(上)
阻止全局钩子的加载
基于DirectShow非线性编辑DES
COM 组件设计与应用(十七)——持续性
使用
教你如何作弊玩扫雷
杂谈:项目管理的是与非
定制调试诊断工具和实用程序——摆脱DLL“地
托管应用中的意外错误
盗QQ,我也会
用微软的实时通信API集成丰富的客户端通信
用DirectShow抓取影片帧
在MDI程序中实现类似WPS2000的文件切换标签
对话框模板,RegexTest
高效开发与彻底测试
如何在NT下获取进程的路径(增补)
在MFC中用正则表达式对窗体进行有效性验证
对《一个简单的学生成绩管理系统》优化的一
深入浅出 CPropertySheet

相关评论


本文章所属分类:首页 VC++

  热门关键字: