Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1683148
  • 博文数量: 584
  • 博客积分: 13857
  • 博客等级: 上将
  • 技术积分: 11883
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 09:34

分类: 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比较白痴的错误)

阅读(902) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~