数据库问题,100冰儿请您指点

binger 2000-08-26 09:07:00
我有数据库c:\data\test.mdb,表名为ziliao,有一字段为name,请教在vc++6.0下用
ado,odbc两种方法的详细操作步骤:如何连接打开数据库,如何读出第2个name字段,应用
这两种方法需要什么条件,我是初学者,请您改我详细的程序解答,谢谢!
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
binger 2000-08-26
  • 打赏
  • 举报
回复
DSN不用带路径吗?我的文件在c:\data\test.mdb,应该怎么设置呢?zzh我看过您的vc++开发数据库的系列打作,我现在要设计数据库程序,您能帮我吗?因为我是初学者,能不能给我一些原码?谢谢!!!
binger02@371.net
zzh 2000-08-26
  • 打赏
  • 举报
回复
1、设置ODBC数据源,假设为TEST
ADO方式:
_ConnectionPtr MyDb;
MyDb.CreateInstance(__uuidof(Connection));
MyDb->Open("DSN=TEST;UID=sa;PWD=","","",-1);
_RecordsetPtr MySet;
MySet.CreateInstance(__uuidof(Recordset));
MySet->Open ("select * from name",MyDb.GetInterfacePtr (),adOpenDynamic,adLockOptimistic,adCmdUnknown);
HRESULT rs=MySet->MoveFirst ();
while(!MySet->EndOfFile )
{
MySet->GetCollect (_variant_t("name"));
mySet->MoveNext();
}
MySet.Close();
Mydb.Close();
2、ODBC方式
1、只读取数据
CDatabase db;
db.Open("TEST",FALSE,FALSE,"ODBC;",TRUE);
CRecordset m_Set(&db);
m_Set.Open(CRecordset::snapshot,"select * from name");
while(!m_Set.IsEOF())
{
TRACE("%s",m_Set.GetFieldValue("name");
m_Set.MOveNext();
}
m_Set.Close();
db.Close();

2、从CRecordset派生出一个类CZiLiao,
CDatabase db;
db.Open("Test",FALSE,FALSE,"ODBC;",TRUE);
CZiLiao m_Set(&db);
m_Set.Open(CRecordset::snapshot,"select * from ziliao");
while(!m_Set.IsEOF())
{
TRACE("%s",m_Set.m_name);
m_Set.MoveNext();
}
m_Set.Close();
db.Close(0;


zzh 2000-08-26
  • 打赏
  • 举报
回复
见下面步骤:
1、ODBC
设置ODBC DSN,假设为ZILIAO,从CRecordset类派生出一个类CZiLiaoTable,该类所对应的表为ziliao
CDatabase db;
db.Open("ZILIAO",FALSE,FALSE,"ODBC;",TRUE);
CZiLiaoTable m_Set(&db);
m_Set.Open(CRecordset::snapshot,"select name from ziliao");
while(!m_set.IsEOF())
{
TRACE("%s",m_Set.m_name);

}
m_set.Close();
db.Close();
如果只是读取该记录,也可以如下:
CDatabase db;
db.Open("ZILIAO",FALSE,FALSE,"ODBC;",TRUE);
CRecordset m_Set(&db);
m_Set.Open(CRecordset::snapshot,"select * from ziliao");
while(!m_Set.IsEOF())
{
TRACE("%s",m_Set.GetFieldValue("NAME");//第二个字段
}
m_Set.Close();
db.Close();
2、ADO方式
_ConnectionPtr MyDb;
MyDb.CreateInstance(__uuidof(Connection));
MyDb->Open("DSN=ziliao;UID=sa;PWD=","","",-1);
_RecordsetPtr MySet;
MySet.CreateInstance(__uuidof(Recordset));
MySet->Open ("select * from name",MyDb.GetInterfacePtr (),adOpenDynamic,adLockOptimistic,adCmdUnknown);
HRESULT rs=MySet->MoveFirst ();
while(!MySet->EndOfFile )
{
MySet->GetCollect (_variant_t("name"));
rs=MySet->MoveNext ();
}
如果还有问题,可以参孝开发文档当中的几篇数据库文章
zzh 2000-08-26
  • 打赏
  • 举报
回复
见下面步骤:
1、ODBC
设置ODBC DSN,假设为ZILIAO,从CRecordset类派生出一个类CZiLiaoTable,该类所对应的表为ziliao
CDatabase db;
db.Open("ZILIAO",FALSE,FALSE,"ODBC;",TRUE);
CZiLiaoTable m_Set(&db);
m_Set.Open(CRecordset::snapshot,"select name from ziliao");
while(!m_set.IsEOF())
{
TRACE("%s",m_Set.m_name);

}
m_set.Close();
db.Close();
现要为学校建立一个数据库,设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。.现要建立关于系、学生、班级的数据库,关系模式为:   学生STUDENT (学号,姓名,年龄,班号)   班CLASS (班号,专业名,系名,入学年份)   系 DEPARTMENT (系号,系名) 用户USERINFO(用户名,密码) 试用SQL语言完成以下功能:  1 建表,在定义中要求声明:   (1)每个表的主外码。   (2)每个班级的人数不能超过30人。   (3)学生的年龄介于15到40岁之间。   (4)学生姓名不能为空。   (5)只有班里没有学生的时候,才能删除该班级。 2 插入如下数据 如插入   CLASS(   101,软件,计算机,1995; 102,微电子,计算机,1996;   111,无机化学,化学,1995; 112,高分子化学,化学,1996;   121,统计数学,数学,1995; 131,现代语言,中文,1996;   141,国际贸易,经济,1997; 142,国际金融,经济,1996;   )   STUDENT (   8101,张三,18,101; 8102,钱四,16,121;   8103,王玲,17,131; 8105,李飞,19,102;   8109,赵四,18,141; 8110,李可,20,142   8201,张飞,18,111; 8302,周瑜,16,112;   8203,王亮,17,111; 8305,董庆,19,102;   8409,赵龙,18,101; 8510,李丽,20,142 )   DEPARTMENT( 001, 数学; 002, 计算机;   003, 化学; 004, 中文;   005, 经济;)  3 完成以下查询功能   (1)找出所有姓李的学生,并按其年龄由小到大排序。   (2)列出所有开设超过两个专业的系的名字。   (3)学校又新增加了一个物理系,编号为006。 (4)学生张三转到化学系111班,更新相关的表。 (5)自己设计并实现一前台界面程序。 (6)系统登录、退出等基本功能 (7)各项数据的查看添加修改插入删除排序功能 (8)由主界面链接到各功能模板的功能

4,011

社区成员

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

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