资源描述:
《VC使用ODBC开发数据库使用总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1. 配置数据源在程序中根据用户选择动态配置数据源而不调用ODBC数据源管理器,对于应用程序开发有时是十分必要的。毕竟ODBC数据源管理器对于对数据库不熟悉的用户显的复杂了,且ODBC数据源管理器的界面风格有可能与整个应用程序的界面风格不一致,对于严谨的应用程序开发者来说,这些都是不能容忍的。配置SQLServer数据源时,必须有SQLServer服务器名和服务器中的目标数据库名(否则打开该数据源时,就会弹出配置数据源对话框或失败)。这与配置Access等数据库的数据源时指定数据库文件的路径不同。可以通过ODBCAPI函数SQLBrowseConnect得到本
2、地所有的SQLServer服务器、服务器中的库、语言信息等。其使用方法如下所示:①得到服务器名 SQLBrowseConnect(hdbc,"DRIVER={SQLServer};",SQL_NTS,BrowseResult,sizeof(BrowseResult),&BrowseResultLen); 其中hdbc是用SQLAllocHandle函数得到的连结句柄,第二个参数是指定连结属性的输入字符串,第三个参数是输入字符串的长度,第四个参数是输出字符串的指针,我们要得到的信息就存于这个字符串中,第五个参数指定输出字符串的长度,第六个参数是实际返回字符串的长
3、度。BrowseResult所指向的函数返回的字符串中含有形如“SERVER:Server={Server_name1,Server_name2,…}”的字符串,其中Server_name1、Server_name2就是SQLServer服务器名。 ②得到库名 当用户选定一个服务器之后,可以进一步利用SQLBrowseConnect函数得到服务器中存在的库或语言信息(如果需要的话)。SQLBrowseConnect(hdbc,"SERVER=Server_name1;UID=sa;PWD=515578;",SQL_NTS,BrowseResult,siz
4、eof(BrowseResult),&BrowseResultLen);其中UID和PWD是访问该服务器的用户名和密码。这次BrowseResult所指向的函数返回的字符串中含有形如DATABASE:Database={master,model,…}和LANGUAGE:Language={Arabic,Brazilian,English,…}的字符串,其中master、model为服务器中的数据库名。利用这些得到信息就可以配置SQLServer数据源了:SQLConfigDataSource(NULL,ODBC_ADD_DSN,"SQLServer","DSN=myDSN
5、0SERVER=xhm DATABASE=pubs ")) 作者有幸在网上找到SantoshRao编写的CSQLInfoEnumerator类,该类有EnumerateSQLServers、EnumerateDatabase、EnumerateDatabaseLanguage三个成员函数,其封装了SQLBrowseConnect函数并进行相应的字符处理,大大简化了SQLBrowseConnect函数的使用。 2. 与数据源建立连接如果使用ODBCAPI函数进行连结,函数SQLConnect、SQLDriverConnect和SQLBrowse
6、Connect都可以实现。其中SQLConnect函数用于给定所有参数直接建立与数据源的连接;SQLDriverConnect用于给定了部分连接参数,并弹出数据源浏览窗口与用户交互,获得足够的参数后建立与数据源的连接;而SQLBrowseConnect是通过迭代获取连结参数再进行连接,其使用如前所述。MFC为连接数据源提供了一个数据库类CDatabase,通过它我们可以非常方便地与数据源建立连结://m_db是CDatabase的对象//m_szUserId,m_szPassword是CString对象,为访问数据源的用户名和密码 CStringstr;
7、 str=_T("DSN=xhmtest;UID=")+m_szUserId+_T(";PWD=")+m_szPassword; if(!m_db.OpenEx(str,CDatabase::noOdbcDialog)){ AfxMessageBox("打开数据源失败");}另外,如果我们想对数据源进行操作,就可以利用打开的CDatabase对象执行SQL语句实现。如新建一张表: str="CREATETABLETableDemo(Column1TEXT,Column2NUMB