全部博文(584)
分类: WINDOWS
2011-03-28 10:53:21
前几日,把我的本科毕业设计程序借给师弟参考,他却说不会连接数据库。当时使用的数据库是 SQL Server 2000,也是特意为了学习这个数据库的使用,其实程序所涉及的数据很少,用Access就可以解决了。答应师弟帮忙,但是打开程 序之后,却发现自己也不会了。呵呵,没办法,记性不好!上网查找许多相关资料,再加上向朋友请教,最后总算是解决了。为了以后再不会出现类似情况,我决定 把具体步骤以及遇到的问题整理出来,也算是给大家一个借鉴,希望对你们有用处,不正确的地方也请高手指正。
一、SQL Server 2000
1、打开“企业管理器”,你会发现“SQL Server组”中已经存在“(local)”服务器,为了简单,我们就使用该服务器;
2、在“local”服务器下新建一个“数据库”(自命名为“mydb”),并在该数据库中新建一张表(假设命名“T_RealData”),存储自己的数据。
二、ODBC数据源
1、打开“控制面板”(要用控制面板的经典视图,分类视图中没有管理工具,在XP中两种视图通常可以切换),选择“管理工具”,打开“数据源(ODBC)”;
2、在“(ODBC)数据源管理器”对话框中选择“系统DSN”选项卡,添加新的系统数据源:
1)选择安装数据源的驱动程序——“SQL Server”;
2)数据源名称——“myDSN”,连接服务器——“(local)”;
3)下一步,下一步;
4)更改默认的数据库为“mydb”;下一步;
5)完成。测试数据源(如果不出意外,通常会测试成功的)。
三、VC访问数据
1、链接数据库并打开
CDatabase m_dbAgent;
m_dbAgent.OpenEx("DSN=myDSN;UID=SA;PWD="); //DSN是数据源的名字
2、获取表中数据
/***************获得数据表中的对象个数m_nItem**************************/
CString sql,str;
CRecordset *p_rs=new CRecordset; //定义记录集对象指针
p_rs->m_pDatabase=&m_dbAgent; //使数据库指向m_dbAgent
sql = _T("select count(*) as total from T_RealData"); //使用集函数查询对象个数
p_rs->Open(AFX_DB_USE_DEFAULT_TYPE,sql); //获得有效的查询记录集
p_rs->GetFieldValue("total",str); //取出查询记录集中的数据
int m_nItem=atoi(str);
3、数据库操作
sql = _T("backup database mydb to disk='%s'", SavePath); //备份数据库
m_dbAgent.ExecuteSQL(sql);
sql= _T("restore database mydb from disk='%s'", filepath); //还原数据库
m_dbAgent.ExecuteSQL(sql);
四、问题
1、程序运行时出现错误对话框——对象名“T_RealData”无效,未能准备语句。
调试信息:
对象名 'T_RealData' 无效。
State:S0002,Native:208,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server]
未能准备语句。
State:37000,Native:8180,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server]
可能原因:
连接数据源时没有更改默认数据库,通常默认数据库是master,改为mydb即可。(ps比较白痴的错误)