日期:2016-7-14(原创文章,禁止转载)
2008-12-04 15:12
来源:blogs
编辑:Googler【纠错】人评论
A-A+
怎样开淘宝店 站优化方法 创业如何取得投资
小米note顶配版评测
最新LOL活动
不想弄得太复杂,我仅仅演示实现 DataReader和DataSet,起个抛砖引玉的作用,也顾不得代码结构是不是优美、性能是不是良好,能够到达本文的目的便可。
为了方便大家亲自动手实践,数据库使用的是ACCESS,文章末尾有下载链接。实际项目中要使用SqlServer和ORACLE的话,把几个OleDb函数换个名字便可,怎样换就不用我多说了。
相同的功能,我用三种语言来实现,首先,给出贵州治疗癫痫病哪个医院好.NET的标准语言C#版本作为基本参照。
以下是C#版本:
main_l文件源码:
以下为援用的内容:using System;using ta;using eDb;using xt; public class main_cs:ge { OleDbDataReader dr; OleDbCommand cmd; DataSet ds; OleDbDataAdapter adp; OleDbConnection conn; StringBuilder connStr; public void Page_Load() { connStr = new StringBuilder(Provider=EDB.4.0;Data Source=); pend(pPath(b)); conn = new OleDbConnection(String()); cmd = new OleDbCommand(SELECT title FROM image_dataconn); en(); dr = ecuteReader(); while(ad()) { ite(dr[title]); } ose(); ose(); ds = new DataSet(); adp = new OleDbDataAdapter(SELECT title FROM image_dataconn); ll(ds); ite(bles[0].Rows[0][title]); } }
以下是C++版本:
在VisualStudio2003中创建C++.Net类库癫痫病的前期症状都有哪些呢,命名_dll,项目中援用ta、b、L生成_l文件,以下是主文件全部源码(其它那些头文件、资源文件甚么乱七八糟的统统不用理睬,当它们不存在):
以下为援用的内容:#include stdafx.h#include _dll.h#using #using #using #using using namespace System;;using namespace System::Xml;using namespace System::Web;using namespace System::Text;using namespace System::Data;using namespace System::Data::OleDb;public __gc class main : public System::Web::UI::Page{private: OleDbDataReader __gc* dr; OleDbCommand __gc* cmd; DataSet __gc* ds; OleDbDataAdapter __gc* adp; OleDbConnection __gc* conn; StringBuilder __gc* connStr;public: void Page_Load() { connStr = new StringBuilder(Provider=EDB.4.0;Data Source=); connStr-Append(HttpContext::Current-Server-MapPath(b)); conn = new OleDbConnection(connStr-ToString()); cmd = new OleDbCommand(SELECT title FROM image_dataconn); conn-Open(); dr = cmd-ExecuteReader(); while(dr-Read()) { Response-Write(dr-get_Item(title)); } dr-Close(); conn-Close(); ds = new DataSet(); adp = new OleDbDataAdapter(SELECT title FROM image_dataconn); adp-Fill(ds); Response-Write(ds-Tables-get_Item(0)-Rows-get_Item(0)-get_Item(title)); }};
以下是J#版本:
道理同C++,使用J#创建类库,命名main_jsl,项目中援用ta、b、L源码以下:
以下为援用的内容:import ta海南哪家医院可以治好癫痫.*;import eDb.*;import b.*;import xt.*;public class main_jsl extends ge{ OleDbDataReader dr; OleDbCommand cmd; DataSet ds; OleDbDataAdapter adp; OleDbConnection conn; StringBuilder connStr; public void Page_Load() { connStr = new StringBuilder(Provider=EDB.4.0;Data Source=); pend(get_Server().MapPath(b)); conn = new OleDbConnection(String()); cmd = new OleDbCommand(SELECT title FROM image_dataconn); en(); dr = ecuteReader(); while(ad()) { get_Response().Write(t_Item(title)); } ose(); ose(); ds = new DataSet(); adp = new OleDbDataAdapter(SELECT title FROM image_dataconn); ll(ds); get_Response().Write(t_Tables().get_Item(0).get_Rows().get_Item(0).get_Item(title)); }}
终了,DLL文件放置在站点根目录的Bin文件夹下面便可。
以上三个文件的功能完全是一样的。
通过以上3种代码的视察,我们可以发现,C#的代码相当简洁(其实能够写得最简洁的是下篇文章再说),J#其次,C++就比较难看了。
在DataTable和DataReader的操作上,可以看到J#和C++大量使用了get_Item()函数,我估计J#和C++都是经过Object变换的,可能会对性能造成少量的影响。
使用这两种语言创建,对习惯了C++和JAVA的朋友来讲,可能会比较有用。
我相信每种语言都有它的长处,大家相互扬长避短,构造一个良好的整体曾看到过很多C#的初学者,仿佛都对有偏见,以历来不用VB为光荣,还有一些朋友,对C++.Net和J#的了解比较少,便误解为这两种语言没有用处,实际上这些认识都是片面的。
我举个例子:
以下为援用的内容:/* Jscript
*/var conn = eateObject(nnection);en(Provider=EDB.4.0;Data Source=+pPath(b));var rs = ecute(SELECT * FROM image_data);while(!F){ite(rs(title).value);veNext();}ose();ose();
不用认为这只是ASP,这一样也是地地道道的。虽然在我们.NET开发者的眼中,RecordSet的名声可能没有DataReader要好,但是这不在本文的讨论范围,这里只说:倘若硬是要用C#实现以上相同功能的话,结果只能是 履行慢、代码长、结构复杂。
在.NET的世界里,没有哪一个语言最好、哪一个语言最烂的说法,五个语言各自有长处短处,大家生成的都是IL中间代码,也就是说,它们天生就可以相互融会,这才是.NET的精华之所在。
查看更多类似文章