说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在DELPHI程序中使用ADO对象存取ODBC数据库

HTML文档下载 WORD文档下载 PDF文档下载
在DELPHI程序中使用ADO对象存取ODBC数据库

关键词:Delphi - MIS

作为一个ASP爱好者,笔者经常在ASP页面中使用ADO对象操作ODBC数据库,觉得用ASP创建Web应用系统确实是挺方便的。虽然在编程生涯中,笔者更喜欢Borland系列产品,对微软产品有点排斥,但对ASP却是例外。某天,忽然想到,ADO对象是一个标准OLE对象,如果在Delphi应用程序中能利用ADO操作数据库,应该挺不错。尤其在用DELPHI做网络数据库应用程序时,如果所在的Web站点是WINNT站点并且支持ASP页面,那就可以用ADO对象访问ODBC数据库,而不用把那么大的BDE再上载到站点上去。这样就可充分利用DELPHI和ASP的编程优势,做出更好的ISAPI/NSAPI/CGI。经过编程和测试,在Delphi中可以成功地用ADO对象存取ODBC数据库,现将本人的使用经验写出来,与大家共享,让我们多一个访问ODBC数据库的方法。

在32位的Delphi中,可以声明一个variant变量(如AVariant),然后通过CreateOleObject创建一个OLE对象,如AVariant:=CreateOleObject ('ADODB.Connection')可以获得一个数据库连接对象的实例,然后就可以利用该对象的方法和属性来操作ODBC数据库了。

下面简单介绍一下访问ODBC数据库所用到的ADO对象及其方法和属性。

1、数据库连接对象(ADODB. Connection)

该对象用于与ODBC数据库建立连接,所有对数据库的操作均通过该连接进行。

数据库连接对象ADODB. Connection的作用象Delphi中的TDatabase对象。

建立一个连接对象的方法为(AConnection为Variant类型变量):

AConnection:=CreateOleObject('A DODB.Connection')

用于建立连接的方法为Open,使用语法为(以对象AConnection为例):

AConnection.Open( ConnectionString

UserId

Password )

三个参数均为字符串类型,其中UserId和Password为用户名称和用户密码,用于访问数据库使用时可以省略,因为在ConnectionString同样可以指定用户名称和用户密码。ConnectionString是用来说明ODBC数据源信息的字符串,其格式为:

'Provider=ProviderName; DSN=DSNName; DRIVER=driver; SERVER=server; DATABASE=database; UID=user; PWD=password'

其中:

Provider:数据提供者,默认状态下为MSDASQL,为微软OLEDB,通常省略;

DSN:要打开的数据库对应的OBDC系统数据源(DSN),是可选参数;

DRIVER:要打开的数据库所用的驱动程序名称,如Access对应Microsoft Access Driver (*.mdb),是可选参数;

SERVER:要打开的数据库所在的服务器名称,本机可用(local),是可选参数;

DATABASE:要打开的数据库名称,是可选参数;

UID:用户名称,用来访问数据库,是可选参数;

PWD:用户密码,用来访问数据库,是可选参数。

以上参数均为可选参数,但必须提供足够的信息来描述一个系统数据源。

假如已经定义了一个ODBC的系统DSN,名称为MyDsn,那么就可用以下语句建立一个数据库连接:

AConnection.Open('DSN=MyDsn');

为了防止DSN不存在或其设置被他人修改时造成应用程序运行错误,可以用ADODB.Connection 创建一个临时ODBC数据源,这样可以保证我们使用的系统DSN的参数设置是正确的。下面的语句可以创建一个临时ODBC系统DSN,对应一个ACCESS数据库,路径为C:\Inetpub\ wwwroot\ test.mdb:

AConnection.open('Driver= {Microsoft Access Driver (*.mdb)};DBQ=C:\inetpub \wwwroot\test.mdb')

建立一个ADODB.Connection后,如果不需要返回操作结果(如删除,修改,更新等操作)就可以对数据库进行正常的SQL操作了,此时应用ADODB.Connection的另外一个方法Execute,使用语法为:

AConnection.Execute( strSQL );

其中strSQL为执行操作的SQL语句,如删除操作可以为:delete from wfjcommu。用AConnection.Close关闭一个数据库连接。

2、数据集对象(ADODB. RecordSet)

如果要执行查询操作并返回查询结果,或者要更方便地操作数据表,那就需要用到数据集对象了。

数据集对象ADODB.RecordSet的作用象Delphi中的TTable或TQuery对象。

建立一个数据集对象的方法为(ARecordSet为Variant类型变量):

ARecordSet:=CreateOleObject ('ADODB.RecordSet')

从数据表取得数据的方法为Open方法,具体使用方法为:

ARecordSet.Open( strCommand

ActiveConnection

int CursorType

intLockType

intCommandType );

其中:

strCommand:字符串,为命令参数,可以是一个Table名称,可以是一个SQL语句,也可以是一个服务器上的存储过程(StoredProc)名称,具体需要后面的参数intCommandType来指定。

ActiveConnection:要使用的数据库连接,是一个ADODB. Connection对象。

intCursorType:长整数,数据集的Cursor类型,可选参数,请参见程序中注释。

intLockType:长整数,对数据表的加锁类型,可选参数,请参见程序中注释。

intCommandType:长整数,命令参数的类型,用来指明strCommand的作用,可以指定strCommand为命令(如SQL语句)或数据表(TTable)或储存过程(StoredProc),可选参数,请参见程序中注释。

如执行一个SQL查询,可以采用如下语句:

ARecordSet.Open('Select * from wfjcommu'

adOpenStatic

ad LockOptimistic

adCmdText);

其它常见属性和方法与TTable和TQuery相比较如下(具体请见ASP帮助文件):

eof

bof: eof

bof.MoveFirst

MoveLast: First

LastMovePrevious

MoveNext: Prior

NextMove: MoveByAddNew: appendUpdate: PostClose: close

Delete加Update:delete,所有对数据表的修改均须用Update使操作有效,这与Delphi不同。

Fields[FieldNo]: Fields[FieldNo]

Fields['FieldName']: FieldByName('FieldName')

3、其他常见对象(与Delphi对应的对象):

ADODB.Field: TField ADODB.Parameter: TPara ADODB.Error: EDBEngineError

ADODB.Command:无 ADODB.Property:无

下面来看一个应用例子:

procedure TForm1.Button1Click(Sender: TObject);

{*****************************************************

用ADO操作ODBC数据库

本程序中,将创建一个临时的ODBC系统数据源,指向一个MsAccess数据库,然后对其中的数据表进行显示、增加、修改、删除和查询操作

注意:请在Uses语句中包含ComObj单元

*****************************************************}

const{一些常量声明,详细请参见adovbs.inc}

{---- CommandType的常量说明 ----}

adCmdUnknown = 0008;//未知

需要系统来判断

速度慢

为缺省值

adCmdText = 0001;//命令语句如SQL语句

adCmdTable = 0002;//数据表名称

adCmdStoredProc = 0004;//存储过程名称

{---- CursorType的常量说明 ----}

adOpenForwardOnly = 0;//只能由前向后单向访问

为缺省值

adOpenKeyset = 1;//可见其他用户对数据的修改

但对其它用户的增加和删除不可见

adOpenDynamic = 2;//其他用户对数据的增加修改和删除均可见

adOpenStatic = 3;//其他用户对数据的增加修改和删除均不可见

{---- LockType的常量说明 ---}

adLockReadOnly = 1;//只读

为缺省值

adLockPessimistic = 2;//在修改时

按单个记录锁定

adLockOptimistic = 3;//在修改后更新时

按单个记录锁定

adLockBatchOptimistic = 4;//在成批更新时记录锁定

var

AConnection

ARecordSet : variant;

longintTemp : integer;

strTemp : string;

intIndex : integer;

begin

{创建一个临时的ODBC数据源

指向一个MsAccess数据库

并利用此DSN建立一个数据库连接}

AConnection := CreateOleObject('ADODB.Connection');

AConnection.Open('Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\inetpub\wwwroot\test');

{建立一个数据集对象

并从数据表中提取数据}

ARecordSet := CreateOleObject('ADODB.RecordSet');

ARecordSet.open( 'wfjcommu'

AConnection

adOpenStatic

adLockOptimistic

adCmdTable );

memo1.lines.clear;

memo1.lines.add('********数据表原有的内容如下********');

{显示各个域的域名}

strTemp := '';

for intIndex := 0 to ARecordSet.Fields.count - 1 do

strTemp := strTemp + ARecordSet.Fields[intIndex].name+';';

memo1.lines.add( strTemp );

{显示各个域的内容}

while not ARecordSet.eof do

begin

strTemp := '';

for intIndex := 0 to ARecordSet.Fields.count - 1 do

strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';

memo1.lines.add( strTemp );

ARecordSet.MoveNext;//移到下条,Next

end;

{增加一个记录}

ARecordSet.AddNew;//增加

Append

ARecordSet.Fields['AName'] := '1';//以FieldByName的方式存取

ARecordSet.Fields['Portable'] := '2';

ARecordSet.Fields(2) := '3';//以Fields[index]的方式存取

ARecordSet.Fields(3) := '4';

ARecordSet.Fields(4) := '5';

ARecordSet.Update;//更新,Post

ARecordSet.MoveFirst;//移到首条,First

memo1.lines.add('********增加了一条记录后的数据表的内容如下********');

{显示各个域的内容}

while not ARecordSet.eof do

begin

strTemp := '';

for intIndex := 0 to ARecordSet.Fields.count - 1 do

strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';

memo1.lines.add( strTemp );

ARecordSet.MoveNext;//移到下条,Next

end;

{修改最后一条记录}

ARecordSet.MoveLast;

ARecordSet.Fields['AName'] := '11';//以FieldByName的方式存取

ARecordSet.Fields['Portable'] := '22';

ARecordSet.Fields(2) := '33';//以Fields[index]的方式存取

ARecordSet.Fields(3) := '44';

ARecordSet.Fields(4) := '55';

ARecordSet.Update;//更新,Post

ARecordSet.MoveFirst;//移到首条,First

memo1.lines.add('********修改了最后一条记录后的数据表的内容如下********');

{显示各个域的内容}

while not ARecordSet.eof do

begin

strTemp := '';

for intIndex := 0 to ARecordSet.Fields.count - 1 do

strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';

memo1.lines.add( strTemp );

ARecordSet.MoveNext;//移到下条,Next

end;

{删除最后一条记录}

ARecordSet.MoveLast;//移到末条,Last

ARecordSet.delete;//删除,delete

ARecordSet.Update;//更新,在Delphi不需要

ARecordSet.MoveFirst;//移到首条,First

memo1.lines.add('********删除了最后一条记录后的数据表的内容如下********');

{显示各个域的内容}

while not ARecordSet.eof do

begin

strTemp := '';

for intIndex := 0 to ARecordSet.Fields.count - 1 do

strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';

memo1.lines.add( strTemp );

ARecordSet.MoveNext;//移到下条,Next

end;

ARecordSet.Close;{关闭数据集}

{用SQL语句进行查询

查询姓名为“张三”的记录}

{注意,在SQL语句中,字符串应该用单引号包括起来}

ARecordSet.open( 'select * from wfjcommu where AName = ''张三'''

AConnection

adOpenStatic

adLockOptimistic

adCmdText );

memo1.lines.add('********张三的内容如下********');

memo1.lines.add( '共有' + IntToStr( ARecordSet.RecordCount ) + '条匹配的记录' );

{显示各个域的内容}

while not ARecordSet.eof do

begin

strTemp := '';

for intIndex := 0 to ARecordSet.Fields.count - 1 do

strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';

memo1.lines.add( strTemp );

ARecordSet.MoveNext;//移到下条,Next

end;

{关闭数据集和数据库连接}

ARecordSet.close;

AConnection.close;

end;

听别人说总不如自己看实际的例子来体会。在这个例子中,将演示如何利用ADO对象来对一个数据表进行查询、增加记录、修改记录和删除记录操作。具体的用法请参见程序中的注释,如果有点Delphi数据库编程经验,相信不难理解。

在我们的例子使用的数据库为Test.MDB,其中有一个数据表为wfjcommu,有五个字段AName、Portable、Tel、BP、PostAddress,分别表示姓名、手机号、电话号码、呼机号码和通信地址。

以上程序在PWIN98+ Delphi 3.0+PWS(Personal Web Server)4.0下调试通过。

基于VB的通用折行打印程序 基于VB和EXCEL的报表设计及打印 VB建立多级目录 -VB资料 VB建立快捷方式-VB资料 VB建立文件关联 -VB资料 将RichTextBox 之中被选取的内容复制到剪贴簿-VB资料 将我的程序的文本直接送到WORD中(不用粘贴)-VB资料 开启文件属性窗口 -VB资料 快速读取 TextBox 第 N 行的资料 -VB资料 快速选择里List全部项目-VB资料 VB利用 App.Path 读取「应用程序所在之目录」 VB利用 EM_LINESCROLL 信息控制 TextBox 的卷动。 命名的技巧 -VB资料 目录所占的字节数-VB资料 VB判断文件是否在IE的缓存中 屏蔽文本框的右键菜单-VB资料 VB取得长文件名 VB取得临时文件名 VB取得某个目录底下所有文件大小总和 VB取得文件的扩展名 VB取得文件内容 确定 TextBox 有几行-VB资料 确定是 WINDOWS 的可执行文件-VB资料 让打印机只打印一行-VB资料 VB如何把批处理文件转换成EXE文件? VB如何调用 Office VB如何将文件删除到回收站 VB如何快速移动文件? VB如何让文本框输入完后,直接跳入下一行? VB如何使用vb取得一个文件的控制权 VB如何使用文件复制对话框? Solaris下如何使用USB存储器? 字符 "10"与"2"的排序问题? 各位帮我看看为什么关闭不可以那? 图像处理的高手请进:jpg的分割与组合问题? 请问:APPLET中如何调用一小段MPEG格式的VIDEO? html页面上的透明传输 如何得到winxp中的拨号上网密码 OpenGL与内存设备环境 如何在windows2000下安装apache服务器? 请问谁能帮我把linux里网卡芯片w89c940的驱动源程序提取出来?? html页面上的透明传输 C# webform的简单问题,如何关闭窗口 新手上路,Jb8的小问题 100分求购 经常看到说ADO很好的帖子,但是还是有一些疑惑,望高手赐教 用VC编写NetDDE程序,怎样设定客户程序连接服务器时的密码? 怪问题,请大虾帮忙!!!! 请问要学习数据库系统设计应该看那些资料? 急:高分求助关于jdbc连接MySQL数据库的问题. 如何用javascript来检测机器上是否安装word2000?请给点代码提示,先谢谢了 在本地机器上测试邮件发送 使用treeview数据库绑定,能不能绑到一个子节点下? 关于给目录树的子菜单再增加下层菜单的问题 要访问mysql数据库中排列在最前面的5条数据,怎么班? 高分征求 SQL SERVER 数据库的冗余、负载均衡的解决方案? 无法从硬盘安装Redhat9,大家帮帮我 Delphi7中安装上自己编写的控件后出现的问题??? 求助 100分深情大奉送!! 请教各位高手帮忙是关于EOT的??? 到底怎么用存储过程?是不是在查询分析器中使用? 到底怎么用存储过程?是不是在查询分析器中使用? 串口问题!!! behavior:url(#default#userData)的问题!马上给分。 如何得到所有用户表的表名?(在线等候) 怎么让打开的EXCEL文档自动到某一工作表?? 如何分别取得字符串中空格前和空格后的数据呢?如‘dfds df fds'分为dfds df fds. 谁知道MSWord的文件格式? 怎样给自定义函数设置多个参数项? 在URL地址栏中传递字符串参数遇到的一个问题??? 如何在繁體下打開簡體文件名的文件?要求不能用改名的辦法 插入数据到数据库! 高手关注--------送分-----------急急急! 在ASP中如何编程建立索引服务的编录及目录? 在web server application把MEMO字段中带格式(RTF)的内容转换成纯文本? 请问在身份验证中,能否有两个login.aspx??? 急~那篇给vb控件打包文件添加数字签名以便浏览器浏览的那篇文章在哪里? 用vb如何实现模拟雷达界面??欢迎赐教! 如何用CSS控制INPUT的输入外观不是立体的,而看起来是平板的样子,只有一个边线? 用户注册的问题,密码总验证不对,能不能看看错在哪里? 如何使文本框只显示下面的边框? xsl求助~~~ 高一化学有机题,急求一种气态烷烃和一种烯烃的混合物9克,其密度是相同条件下氢气密度的11.25倍,当混合气体通过足量溴水时,溴水增重4.2克,求这两种气态烃.某烃的相对分子质量156,在四 ∫ 2x arc cotx dx 的积分是?高数课程……可惜数学白痴不懂 如图所示,AD是△ABC的中线,过C,B分别作AD及AD延长线的垂线CF,BE,垂足分别为F,E.求证:BE=CF. 将11.2L(标准状况)乙烯和乙烷的混合气体通入足量的溴的四氯化碳溶液中,充分反应后,溴的四氯化碳溶液质量增加了5.6g.求原气体混合物中乙烯和乙烷的物质的量之比和质量比. 小学四年级《白鹅》谁有原文我现在需要小学四年级《白鹅》的课文,谁有,给我谢谢了,不要教案或是课文分析只要原文就行了. 在△ABC中,AD为△ABC的中线,DG为AD的延长线,BE⊥AD,CF⊥AG,垂足分别为E,F.求证:BE=cf 高一化学有机题A是分子式为C7H8的芳香烃,已知它存在以下一系列转化关系,如图,C为一种一元醇D是A的对位一溴代物,H与E、I与F分别互为同分异构体:(1)化合物I的结构简式是——,反应B到C的化 已知一个三角形的两边分别是10和7,则第三边上的中线取值范围是多少? ad是△abc的中线,过c、b分别作ad及ad的延长线的垂线cf、be,垂足分别为f、e.求证:be=cf. 紫光檀好吗 已知三角形两边长分别为10和4,那么第三边上的中线长m的取值范围是? 如图,△ABC中,AD是角平分线,G为BC的中点,GE平行AD交CA的延长线于E,交AB于F;求证:BF=CE 在直角坐标平面中,X轴上的点M到定点A(2,-4)B(1,-2)的距离分别为MA和MB当MA+MB取最小值时点M的坐标为----(只要写答案, 已知三角形的两边分别长10和4,那么第三边上的中线长a的取值范围是?拜托了各位 谢谢 1、 A、B两地距离是S,甲乙两人同时从A地步行到B地,甲速度一直是v,而乙走前一半路程与甲的速度之比为3:4,走后一半路程与甲的速度之比为4:3那么____________先到B地,甲乙两人走完的时间比是___ C语言 电文破译 题目和我编写的程序如下,请大神指出我错在哪里,并改正,答得好的追加.Description有n行电文,每行电文都已按下面规律译成密码:即第1个字母变成第26个字母,第2个字母变成第25 角的平分线上的点到角两边距离相等,请求讲解 金星小叶檀手串盘玩一段时间后金星少了是怎么回事 马小虎在计算17×﹙□﹣9﹚时,将题目错看成17×□﹣9.他得到的结果与正确答案相差多少 已知集合A={x|x^2-4mx+2m+6=0}集合B={x|x 1.约翰和妻子珍妮的家庭生活状况如何?2.找出文中描写 自然环境的语句,并说说自然环境的描写在文中的作用3.品析下面句中加点词语的表达效果.(老人的目光落到珍妮缀着补丁的围裙上,神 如右图,在三角形ABC中,BC=3BD,三角形BDE的面积是三角形ABC的面积的十二分之一,则BE是AB的几分之几? 爱心的作文 200子 2小时 谁知道这个阅读短文的题目,“我和我的妻子珍妮抛下我们自己的诊所...”描写这个医生外出出诊时,去时因为道路不熟悉,农民给他开灯,回来时遭遇大雪,农民的灯依然为他打开,反正就是说“ 怎么把2个三角函数化成一个三角函数前面的系数怎么凑的? 一篇描写爱的作文 200多 跟老师,同学,父母,长辈等,的爱 .一篇200多的作文 以(珍妮)命名一个店铺名字(必须带珍妮2个字哦)淘宝店铺 卖鞋子的~ 关于高一化学摩尔方面问题比较0.5mol N2和0.5molCO 下列物理量相同的是1分子数目 2原子的物质的量 3质量 4电子数目 5质子的物质的量 6标准状况下的体积A123 B246 C1234565 D全部 太阳出来绿莹莹,双手搂起地球村.植树减排两手抓,蓝天要高山要青.读了这句诗,你懂得了什么.好的我另加分. 导师说,理论上能上,导师回邮件,理论上能上?怎么办呢====地理学 如图:AC长80km,CD长120km,DB长100km甲在A点,于AB之间来回走动,乙在C点,顺着长方形C-E-F-D走动.已知甲速5千米每时,乙速4千米每时,问:甲第一次从背后追上乙所在的地点,距离D点多少米? D、E分别为BC、AB的中点,则三角形BDE的面积是三角形ABC的面积的几分之几 小学语文课本白鹅课文的好词 一组数据用散点+均值线+在均值横线上的误差线,这统计图叫什么名称?graphpad里可以选, excel能不能做?如图红色箭头所示,这种图叫什么名称?excel可以做吗?像这样的图,excel可以做吗?这种统计图 tan110°转化为0°-45°之间的三角函数 一个圆内两根弦AB、CD相交于点O,求证三角形AOD相似于三角形BOC. 这两题怎么写? 十五夜望月前两句写景不带一个“月”字,却暗写了诗人望月,从哪里可以看出? 在面积为2的平行四边形ABCD中,点E,F,G,H,分别是AB,BC,CD,DA的中点,连接AF,BG,CH,DE得到的是平行四边形MNPQ,求它的面积.要画图.鸡鸡鸡鸡鸡鸡! 世界1000m纪录是多少? 十五夜望月前两句写景,不带一个月字 已知AT为三角形ABC的内角平分线,M为BC的中点,ME平行AB于D,交CA的延长线于E,求证:BD=CE要不然睡不了觉了 大学高数∫3x√(1-x^2)dx 十五夜望月中,前两句写景,不带一个“月”字,我们却可以从什么一词中看出月色的空明皎洁,这两句诗描...十五夜望月中,前两句写景,不带一个“月”字,我们却可以从什么一词中看出月色的空 △ABC中,M为BC中点,AT平分角BACME∥AT,交CA的延长线于E求证:BD=CE 英语在初二以上比较好的人进找出错误的句子并改正_, 1 I like your trouser .where did you get it ? 2 i don'tlike mice.i'm afraid of them . 3 a lot of people watch television every day. 4 we had a lovely weather when we were on holi 《十五夜望月》思想感情,感情基调,表达方式,写景作用 已知三角形三边分别是m,m-1,m+1,求m的取值范围 求此题答案, 设a.b.c是三角形ABC的三边,若a.b.c成等比数列,且c=2a,则cosB是? 已知AT为三角形ABC的内角平分线,M为BC的中点,ME平行AT交AB于D,交CA的延长线于E,求证:BD=CE 2.371kg等于1000m 37.52等于多少m 三角形ABC的对边分别是a.b.c ,若abc成等比数列,且 c=2a 则 cosB=? 白鹅这篇文章从几个方面写白鹅? 那些动物是卵生的蛇是卵生的 直线l与圆O相交于A,B两点,且与半径OC垂直,垂足为H,已知AB=16cm,cos∠OBH=4/5 求圆O的半径 已知三角形三边长风别是m,m-1,m+1,求m的取值范围 几个高一化学有机题1. 某有机物12g完全燃烧,生成7.2gH2O和8.96LCO2(标准状况下),0.5mol此有机物的质量为30g.(1)求分子式 (2)又知此有机物具有弱酸性,能与金属钠反应,也能与碱溶液反应,试 如图在三角形ABC中,AB=AC,D是BA上一点,求证:AB>1/2(BD+DC) 如图 已知AD为三角形ABC的中线,且CF垂直于AD于点F,BE垂直AD,交AD的延长线于E,求证,BE=CF 教科书作品付酬办法发布 文字作品每千土耳其隆重阅兵庆祝建国90周年监听事件对法美关系损害有限美国安局铁杆盟友临阵“倒戈” 称反对意大利前总理:欧洲为配合反恐对美国监埃及武打冠军因支持前总统穆尔西 金牌杭州滨江16所公办学校体育设施免费向台湾空姐酷似林依晨网络走红 海量清纯外媒关注习近平全面深化改革“总体部署意大利总理莱塔会见王毅美国就中国解密核潜艇部队表态中国核潜艇官兵趣闻:自称烧锅炉 1瓶日媒称两艘中国军舰通过冲绳附近毗连区韩雪宣传新片遭裸男突袭 吓得脸色苍白美国家安全局否认收集欧洲电话记录 称美国安局铁杆盟友临阵“倒戈” 称反对永康68岁大爷得乳腺癌 百例患者中就香港立法会主席就人质事件致信菲律宾参杭州有人花162万买了一枚两公斤土豪河北宣化600年古城墙被开凿成窑洞 星云大师获华人企业领袖终身成就奖 马新疆尼勒克县普降大雪 从阳春三月瞬间揭秘欧洲鱼腩直布罗陀:攻入队史首球 哈德森首秀31秒没摸球 网友:10天美媒评博鳌论坛:习近平勾勒亚洲安全和游客拍照踏“浪” 老农痛批“根本在强甘肃龙湾村深藏黄河峡谷中 因奇异石林泳池水位不足 选手跳水纷纷受伤(图)台“教育部长”预估8年后50所大学整“都教授”金秀贤被韩国济州航空选为代澳大利亚申请加入亚投行 成创始成员国李子君紫色礼服合影羽生 网友:在一起德翼副驾驶遗体已经找到 女友称其曾做湖南省株洲市政法委书记谢清纯被调查香港成重庆外资主要来源地 港企主动把申花球迷海报:复仇者联盟出征工体 卡非洲选手称雄世界越野锦标赛 贵阳被70年后,希腊的德国法西斯大屠杀幸存德翼失事客机副驾驶疑似患眼疾 被疑同习近平:珍惜传统友谊 推动中赞关系发健康燕赵行暨省级健康巡讲走进定州国家女足走进校园 郝伟亮相队员传授球
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘