嘉定都市网

标题: [求助]哪为高手会写数据库啊? [打印本页]

作者: ronalzeido    时间: 2004-12-9 18:34
标题: [求助]哪为高手会写数据库啊?
.cpp文件~~~就很一般的那种~~
作者: 莫尼卡    时间: 2004-12-10 13:10
*.cpp 是 Microsoft Visual C++ 的工程文件啊~怎么扯到数据库上了?
作者: evolsee    时间: 2004-12-10 21:52
mdb?
       

此贴由 evolsee 在 2004-12-10 21:53:14 最后编辑
作者: ronalzeido    时间: 2004-12-11 14:48
就是在cpp环境下,也就是用c++编写,最好用c~~~~~我们的作业啊~~我好久没听课了咋办啊~~哪位高手救救我啊~~
作者: hzhou    时间: 2004-12-12 07:33
Visual C++ 1.5下应用MFC进行ODBC编程
1.m-db连接数据源
m-db在完成定义构造后,要调用CDatabase的打开(Open)函数以进行数据源的实际连接:
m-db.Open(lpszDSN, bExclusive, bReadOnly, lpszConnect);
打开函数需要输入四个参数。lpszDSN:要连接的数据源的名字,如果lpszDSN=NULL且lpszConnect中也没有指明数据源名,则该调用会自动出现一个对话框列出所有可用的数据源(名),让用户选择。bExclusive:只支持“假”(False)值,表示为共享(share)方式连接。因此,应用程序在运行前,一定要装入share.exe或在Windows的system.ini中装入vshare.386。 ReadOnly:指明数据源操作方式是“只

读”还是可以修改。lpszConnect: 指明连接字符串,包括数据源名、用户标识码、口令等信息。该字符串必须以“ODBC;”开头,表示该连接是与一个ODBC数据源的连接(考虑以后版本支持非ODBC数据源)。
m-db打开后,其指针可以传给m-recset作为其数据源。m-db关闭后,将关闭所有CRecordset对它的连接,m-db也可以重新打开。
2.m-db操作数据
数据源打开后,即可对数据库文件中的数据表格进行操作,操作以调用SQL语句方式进行,可直接通过ODBC API函数,或者CDatabase类成员函数ExecuteSQL。数据表名在SQL语句中指定,如下语句则在所在的数据源中的clerk表中插入一个记录,记录的name字段值为"chen"。
m-db.ExecuteSQL("insert into clerk(name) value('chen')");3.m-recset连接数据m-recset在构造时,可传入一个CDatabase对象指针,作为m-recset的数据源,当为NULL时,必须重载CRecordset的函数GetDefaultConnect,以提供数据源连接字符串(相当于m-db.Open中的lpszConnect)。如下则表示连接名为COMPANY的数据源(当传入了合法的CDatabase对象指针时,该函数将不被调用)。
CString CUserset::GetDefaultConnect()
{
return"ODBC;DSN=COMPANY;";
}4.m-recset选取记录和字段
m-recset在调用打开函数时,即获得了符合条件的一组记录,条件语句在Open函数中的lpszSQL中给出,如果lpszSQL为NULL,则必须重载CRecordset的函数以提供该语句。该语句是一个SELECT语句,带或不带where和order by子句(如果不带,where和Order by的条件也可在CRecordset的两个预定义成员变量m-strFilter和m-strSort中给出)。lpszSQL也可以只是一个数据表名(table-name),也可以是对内嵌在数据库文件中的查询程序的调用语句。所选择的一系列字段名,在成员函数DoFieldExchange中由一系列RFX-函数指定。RFX-(Record Field Exchange)函数,使字段和成员变量一一建立类型对应关系。另外,m-strFilter中也可以带变量参数(用"?"表示,如"fieldl>=? AND field2<=?"),参数与成员变量的对应关系也在DoFieldExchange中由RFX-函数指定(串中的"?"将被参数变量值逐一替换)。
void CUserset:oFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange:utputColumn);
/*以下为字段连接 */
RFX-???(pFX,"field1",m-var1);
RFX-???(pFX,"field2",m-var2);
...
RFX-???(pFX,"fieldn",m-varn);
pFX->SetFieldType(CFieldExchange::param);
/*以下为参数连接*/
RFX-???(pFX,field1,m-param1);
RFX-???(pFX,field2,m-param2);
...
}其中,???为ODBC SQL数据类型名,如RFX-Double,RFX-Text等。
综合上述,选取记录和字段实际是由下列语句完成:
SELECT rfx-field-list FROM table-name[WHERE m-strFilter][ORDER BY m-strSort]
字段变量和参数变量的个数一定要在调用打开函数前(如构造函数中)准确地赋值给成员变量m-nFields和m-nParams。m-recset在打开后的任何时候调用Requery()函数,将根据新的查询条件(例如修改了参数变量值)重新选取记录。
5.m-recset操作数据
记录集合生成后,其当前记录的各字段值被保存在前述的各字段变量中,如果调用CRecordset的滚动(scroll)函数,如MoveFirst(),MoveNext(),MovePrev(),MoveLast()等,字段变量的值将自动跟随“当前”记录的位置的变化而变化。IsBOF(),IsEOF()用于判别是否移动到记录的头或尾。
数据操作主要包括删除(Delete),添加(AddNew)和更改(Edit),一般流程为:
if(m-recset.CanUpdate()) /*是否允许修改*/
{
if (m-db.CanTransact()) /*是否支持“批”处理*/
{
m-db.BeginTrans();
m-recset.AddNew();
/* 修改字段变量值 */
. . .
m-recset.Update();
m-db.CommitTrans();
if(catch error)
m-db.RollBack();
}
}
对于AddNew和Edit,修改字段变量后一定要调用函数Update(),否则更新将丢失,而Delete操作则不必进行字段值修改和调用Update()。
上述的CDatabase的四个函数是ODBC为保证数据操作的可靠性而提供的“批”处理函数,即在BeginTrans和CommitTrans之间的数据修改如果出现任何异常,可通过函数RoolBack来恢复所做的修改。
在多用户系统使用时,每一个数据源可以被多个用户的多个任务连接,不同的任务可同时修改相同的数据源。ODBC提供了两种数据表更新的同步机制(在m-recset.Open函数中指定),“静态”的(snapshot)和动态的(dynaset)。前者是一组静态的记录集合,当建立后不会改变,除了反应自己的添加/删除外,不反应别的用户的修改,除非调用了Requery重新建立。后者是一组动态的记录集合,自己或别的用户所作的修改随时反应到集合中来(当然也可用Requery重建),以保持记录与数据源的同步。在应用中,应根据需要确定使用哪一种方式。
结束语
从以上讨论可以看出,ODBC应用接口十分简便!再加上Visual C++中的AppWizard和ClassWizard自动生成框架代码功能,连接一个数据源,生成一个CRecordset对象,就更快捷了。
应用程序只需关心数据的处理而不必费心数据的存取,另外,另一个与ODBC有关的类CRecordView,是一个窗口类CWnd的派生类,建立在CRecordset上,可直接构造数据库记录显示窗口,某些情况下也不
妨一用。


既然是你的作业,给你转篇文章看看,下面就要自己去做了,孩子!


       

此贴由 hzhou 在 2004-12-12 07:33:59 最后编辑
作者: ronalzeido    时间: 2004-12-14 10:39
不是啊,我们做的都是很简洁的那种啊:
1、        建立数据库表
2、        能够对数据库中的单表进行数据导入
3、        能够对数据库中的单表进行插入
4、        能够对数据库中的单表进行查询
5、        能够对数据库中的单表进行更新
6、        能够对数据库中的单表进行删除
我们是刚接触C语言,所以请大家帮帮忙啊~~~
为什么。。。。。。。。。为什么。。。。。。。。么人救我。。。。。。。
跟ODBC不搭介的啊~~~就是用C在C++环境下做~~~~高手救救我啊~~~
看来我得自杀了`~~~

       

此贴由 ronalzeido 在 2004-12-14 19:27:13 最后编辑
       

此贴由 ronalzeido 在 2004-12-16 12:00:41 最后编辑
       

此贴由 ronalzeido 在 2004-12-17 13:21:10 最后编辑
作者: 豕是猪的上帝    时间: 2004-12-18 00:28
楼主是念哪个学校的?你是计算机系的吗???象这个样子下去,没前途的。改行吧!
让我来指出你所范的一些基本错误:
第一,C是C,C++是C++,两者有着及其相近的血缘关系,但毕竟有所区别。所以“C在C++环境下面做……”这句话,是错的;
第二,跟ODBC不搭介?朋友,难道你有水平可以自己开发数据库引擎的能力?调用ODBC可以很简单的连接、操作数据库。
第三,其实也没什么第三拉,只想说你是属于不太聪明的那一种人。要偷懒你也要会偷懒的方法啊。网上面有关数据库编程的C,或者C++的代码遍地都是。会使用搜索引擎吗?google、baidu知道吗?

作者: ronalzeido    时间: 2004-12-20 08:55
楼上是念哪个学校的?我是没前途了~~~但我还在垂死挣扎~~~这个世界不会这么绝情的~~
回第一:C在C++环境下面做……”这句话,不可能错,C++完全包容C。。。。。;
回第二:我们是用我们刚学的C知识做一个数据库,不用什么ODBC。。虽然我不知道什么是ODBC。。。。。
回第三:网上我已经找过了,不可能有我们的作业之类的,所以才来找现实中的高手~~
楼上是高手么??如果是,那请救我一命~~~如要报酬,尽管说~~~

作者: gundam_xx    时间: 2004-12-20 09:23
应该是用到ODBC的~~~会简单很多的
作者: ronalzeido    时间: 2004-12-20 09:43
应该没用到吧~~~我太郁闷了~~~
作者: gundam_xx    时间: 2004-12-20 10:04
编程不要搞太死 不可取

用ODBC绝对不会错 假如老师一定要用最复杂的方法 说明他根本不懂编程 不配做程序员老师
作者: 兰车骑士    时间: 2004-12-20 13:32
楼上的那位兄弟,话呢!不可以说的太绝。我倒是很想有一个能教我用最复杂的方式来编写数据库操作的老师。一切从最底层的东西做起来,那才是正真的程序员。这年头,人越来越浮躁,软件界也是一样。
楼主是要编写单纯的数据库应用呢?还是编写一个数据库?两者的概念有着大大的不同哦!
如果只是简单应用的话,调用ODBC是没有错的。
ODBC(Open DataBase Connectivity)是微软倡导的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API),它以X/Open和 ISO/IEC的调用级接口(CLI)规范为基础,并使用结构化查询语言(SQL)作为其数据库访问语言。 ODBC总体结构有四个组件:

----· 应用程序 执行处理并调用ODBC API函数,以提交 SQL语句并检索结果。

----· 驱动程序管理器(Driver Manager) 根据应用程序需要加载/卸载驱动程序,处理ODBC函数调用,或把它们传送到驱动程序。

----· 驱动程序 处理ODBC函数调用,提交SQL请求到一个指定的数据源,并把结果返回到应用程序。如果有必要,驱动程序修改一个应用程序请求,以使请求与相关的DBMS支持的语法一致。

----· 数据源 包括用户要访问的数据及其相关的操作系统、DBMS及用于访问DBMS的网络平台。

----ODBC驱动程序的使用把应用程序从具体的数据库调用中隔离开来,驱动程序管理器针对特定数据库的各个驱动程序进行集中管理,并向应用程序提供统一的标准接口,这就为ODBC的开放性奠定了基础。
你所要做的就是编辑SQL语句就可以了。其他的事情交给API来做。

如果是编写一个数据库,那可乖乖不得了。我相信这里没有一个人能正真帮得了你!

还有C语言是从B语言上发展过来得,后来呢,又引进了对象的概念而发展成C++。

你想要代码来应付作业吗?那就写的更详细一点,比如你要用是么样的数据库,有那些表,有那些字段,字段是什么类型的。还有你要用什么操作系统,是WIN32的还是UNIX的。都要说清楚的丫,那别人才能帮主你啊!


作者: ronalzeido    时间: 2004-12-20 15:13
楼上的大哥,谢谢啊~~
我们是初学C,肯定是用刚学的知识编,我们学的是谭浩强写的《C语言程序设计第2版》。由于种种原因我的课落得很多所以我才出这么一招实在是被逼无奈啊~~~~
我上面写的是框架,如果真有人能并且肯帮我的,我会说清具体的。。。。
嘉定的高手真的这么绝情。。。。
作者: gundam_xx    时间: 2004-12-21 09:30
有简单的工具不用 多浪费啊

又不是搞基础开发的,除非你打算用最底层的语言开发,那你可以用汇编。
作者: ronalzeido    时间: 2004-12-21 12:59
不是啊,我们还没学到那东西啊~~~
是我们的作业。。。。
我们刚学C的啊~~只能用C啊~~~
作者: 深蓝色的海    时间: 2004-12-21 13:01
我会。很简单的嘛!
作者: ronalzeido    时间: 2004-12-21 13:04
大哥~~~你是开玩笑还是。。。。。。
请先给个肯定的答复~~~~
大哥咋走了???Don't...........
       

此贴由 ronalzeido 在 2004-12-21 20:38:46 最后编辑
作者: 豕是猪的上帝    时间: 2004-12-21 22:50
这块帖子还在第一版上啊?个人不喜欢用MFC,一只用的都是Borland C++,你要的话,报个E-Mail出来,改明给你发一个。
作者: ronalzeido    时间: 2004-12-22 11:14

楼上大哥这么肯帮忙。。。不过你先加我QQ,我吧作业要求先给你。。。。先谢了。。。。
又没音讯了。。。。。。
       

此贴由 ronalzeido 在 2004-12-23 11:51:38 最后编辑
作者: 豕是猪的上帝    时间: 2004-12-23 23:02
考!年关到了,我手上还有好几个项目等着验收呢,哪有那么多时间上来啊。你把作业要求发到eago@tone-e.com我公司的邮箱里去。我先看看,如果真象你说得很简单的话——只是建立表,删除表,增加表内容,删除表内容之类的,一天帮你搞定。还有你先问清楚,borland C++能不能使用,别做到最后来一句不能使用,乃么个记给嘎了
作者: ronalzeido    时间: 2004-12-26 19:14
恩人啊!!!!!!!!!!!!!
这几天没机会上网...
那我发了....那恩人你再下一个VC++的编译器,您做好了可以试一下的,否则让恩人白做了我.....怎么做人啊....
作者: 豕是猪的上帝    时间: 2004-12-26 19:49
楼上那位兄弟,你的作业要求我已经收到。 怎么说呢?当我看到你所发mail,第一个感觉就是!“丫你完了。”还不幸被兰车骑士兄给说着了,你们老师根本就是要你们自己写一个数据库系统!难怪你对odbc一点概念都没有。  的确,你们老师要求的东西,odbc一点用处也没有。看看你作业要求的东西,越看越象一个米你的mysql数据库,根据我的分析下来,你要用的知识面就是1、 对字符串的操作,还不能引用Cstring类;2、对文本数据流的操作;3、建立动态数组;4、结构体,还好你们的老师并没有要求编写可在程序中动态生成结构体。一个结构体就是一个表的字段组成。编写你的作业虽说不难实现,但需要时间。就看你交作业的最后期限了。我最近太忙,你就说什么时候就要交作业了吧
作者: 元宝妹妹    时间: 2004-12-26 20:29
偶晕~~~~~  刚学C就要自己做数据库   现在学计算机要求好高啊~~~
作者: 小布丁    时间: 2004-12-27 10:14
……偶学C一年了,老早就忘记光了,只能说,编程之类的东东好难!!!
作者: ronalzeido    时间: 2004-12-27 14:38
原文由 豕是猪的上帝 在 2004-12-26 19:49:55  发表
楼上那位兄弟,你的作业要求我已经收到。 怎么说呢?当我看到你所发mail,第一个感觉就是!“丫...

那恩人这么忙,我也不奢望元旦前了。。。虽然可以加分。。。。。我们最晚6号。。。 那麻烦了。。。。。

哦,那个索引的功能可以不做的。。。。。
恩人说个话啊。。。。。。

此贴由 ronalzeido 在 2004-12-28 09:07:23 最后编辑
       

此贴由 ronalzeido 在 2004-12-29 11:09:21 最后编辑
作者: forlied    时间: 2004-12-29 16:44
是想做SF吧~
作者: ronalzeido    时间: 2004-12-29 17:30
是什么啊。。。。
我们的作业叫什么我不大清楚啊。。。。
作者: 豕是猪的上帝    时间: 2004-12-29 22:37
瞧你急候拉候的样子,这两天地铁北延伸开通,我为了做项目一直都泡在地铁上。拧7力啊7力色了。侬帮偶来记撒?1月6号就要交作业了。你们老师对代码有具体要求伐,比如一定要用到二叉数列等等概念的?他母亲的,这些概念性的关系最搞了!如果就仅仅是那些要求的,我倒是已经想到可以偷懒的做法了 从表象上来说跟你们老师要求的肯定是一个样子。 写了这么多年的代码,真本事越来越少,以空间换时间的一套,偶倒是越来越精了
元旦三天里帮你做,需要注释你自己去写(我写程序不喜欢写注释)。4号发到你的邮箱里去。
不过你我素不相识,帮你做作业我有好处伐?
我这个人对物质一类的东西看得是很平淡的,所要的也就是那么一点点虚荣性得东西。
嘿嘿!看到此留言候,速用数码相机自拍一张照片做头像,胸口挂一块牌子,上面要写着:“我是猪的弟弟”!
^_^!!!!
       

此贴由 豕是猪的上帝 在 2004-12-29 22:44:57 最后编辑
作者: ronalzeido    时间: 2004-12-30 15:28
没特别的关照过,反正不要太高深就行。。。。。我怎么会这么偷办?如果这次能通过,以后我想我会和你一直保持联系的
拍照的事我会考虑。。。。真的。。。
大哥有没有发啊???我急啊。。。。。。
       

此贴由 ronalzeido 在 2005-01-04 14:53:39 最后编辑
作者: OKOK    时间: 2005-1-4 15:00
原文由 豕是猪的上帝 在 2004-12-29 22:37:19  发表
瞧你急候拉候的样子,这两天地铁北延伸开通,我为了做项目一直都泡在地铁上。拧7力啊7力色了。侬帮偶来记撒...
哈哈,猪罗个弟弟一刚
作者: 爱情保质期    时间: 2005-1-4 15:02
我星期五考VC++

最近正啃书本呢


作者: ronalzeido    时间: 2005-1-4 15:10
我们也考的我要疯了。。。。。。。。。。。
作者: 爱情保质期    时间: 2005-1-4 15:11
我们上机考

不可以带任何东西

死变态老师

你们做什么啊
作者: ronalzeido    时间: 2005-1-4 15:17
我们也是的啊。。。而且连msdn也没的。。。。
作者: 爱情保质期    时间: 2005-1-4 15:18
有就可以作弊了啦

不过我们告诉题目

可我背不下来


急死
作者: ronalzeido    时间: 2005-1-4 15:25
啥?!!!!你们题目都知道的啊那考鸟啊。。。。。msdn又不能作弊那是帮助。。。。。
作者: 爱情保质期    时间: 2005-1-4 15:27
呵呵

我不懂的啦,原谅一下下



谁说的,烦的要死的


本来我们就是考查课啊

考个P试啦
作者: ronalzeido    时间: 2005-1-4 15:42
我们以后的饭碗。。。。。。而我基本上没看过。。。
作者: 豕是猪的上帝    时间: 2005-1-4 23:25
催命啊你!我从元旦开始就抽空帮你写代码!丫的你们老师也正是变态,搞什么吗?这也叫数据库系统,害的我也认认真真地想了一个晚上。哥哥我已经帮你写好99%地代码了,不过帮助信息(-h 命令)要你自己写,我可没有那个空。8过我今天不在单位,在地铁公司,明天下午才能到单位。代码全在我的台式机上。不好意思,笔记本上没有C++,只好用台式机上的Linux用Kdevlper帮你写了。你1月5日下午或者晚上去收把,再根据你们老师的要求把cpp文件名改成你的学号,拿到MFC下面重新编译一下。
作者: 胖嘟嘟    时间: 2005-1-5 09:28
楼上的C达人啊,我是一点不懂的说。公司做的都是java和vb项目。羡慕的说......
作者: ronalzeido    时间: 2005-1-5 11:43
内我要哭了要。。。。。。。。。。
恩人啊。。。。。。。我照片尽快拍。。。。。。。
作者: 豕是猪的上帝    时间: 2005-1-5 18:24
8要哭了。已经发了,8过在交作业之前你最好自己再修改一下。好久8用C写代码了,还有,你们的老师很变态!我不得不自己编写字符串操作的几个常用函数,凸!-_-鄙视你老师一下!
作者: ronalzeido    时间: 2005-1-6 10:22
大哥在不在啊??
我已经编译过了不过还有许多warnings啊。。。。我们还有一点时间大哥能不能再帮我把剩余的编一编啊。。。。。
        有没有QQ啊这样说话快一点。。。

此贴由 ronalzeido 在 2005-01-06 10:26:41 最后编辑
现在都没了不过大哥好象缺很多啊不只是-h啊。。。。。。
大哥明天最后期限了啊!!!
我希望奇迹的出现。。。。。。
       

此贴由 ronalzeido 在 2005-01-06 16:39:14 最后编辑
       

此贴由 ronalzeido 在 2005-01-06 20:41:43 最后编辑
作者: 胖嘟嘟    时间: 2005-1-6 22:02
哈哈,吃软件饭的本身就很忙得,能帮你的时候就要一次搞定,等你再找他的时候,就感觉烦了

可惜不是java题目,不然俺倒是可以帮你,C的话就不通了
作者: ronalzeido    时间: 2005-1-6 22:09
不会的,既然他帮我做了就不会感到烦。。。再说我还没谢他了。。。哦对了我要拍照片去了。。。。不过还等他。。。。




欢迎光临 嘉定都市网 (http://www.jiading.com.cn/) Powered by Discuz! X3.1