实名认证接口数据源服务有哪些?平台安全稳定的,多接口?

毫无疑问,我们已经进入了大数据(Big Data)时代。人类的生产生活每天都在产生大量的数据,并且产生的速度越来越快。根据IDC和EMC的联合调查,到2020年全球数据总量将达到40ZB。
当前,网络与信息安全领域中的安全数据同样也具备大数据的特征:
数据量越来越大:网络已经从千兆迈向了万兆,网络安全设备要分析的数据包数据量急剧上升。同时,随着NGFW的出现,安全网关要进行应用层协议的分析,分析的数据量更是大增。与此同时,随着安全防御的纵深化,安全监测的内容不断细化,除了传统的攻击监测,还出现了合规监测、应用监测、用户行为监测、性能检测、事务监测,等等,这些都意味着要监测和分析比以往更多的数据。此外,随着APT等新型威胁的兴起,全包捕获技术逐步应用,海量数据处理问题也日益凸显。
速度越来越快:对于网络设备而言,包处理和转发的速度需要更快;对于安管平台、事件分析平台而言,数据源的事件发送速率(EPS,Event per Second,事件数每秒)越来越快。
种类越来越多:除了数据包、日志、资产数据,安全要素信息还加入了漏洞信息、配置信息、身份与访问信息、用户行为信息、应用信息、业务信息、外部情报信息等。
安全数据的数量、速度、种类的迅速膨胀,导致的不仅仅是海量异构数据的融合、存储和管理的问题,甚至动摇了传统的安全分析体系和方法。
当前绝大多数安全分析工具和方法都是针对小数据量设计的,在面对大数据量时难以为继。新的攻击手段层出不穷,需要检测的数据越来越多,现有的分析技术不堪重负。面对天量的安全要素信息,我们如何才能更加迅捷地感知网络安全态势?
传统的分析方法大都采用基于规则和特征的分析引擎,必须要有规则库和特征库才能工作,而规则和特征只能对已知的攻击和威胁进行描述,无法识别未知的攻击,或者是尚未被描述成规则的攻击和威胁。面对未知攻击和复杂攻击如APT等,需要更有效的分析方法和技术!如何做到知所未知?我们需要更主动、更智能的分析方法。
面对天量安全数据,传统的集中化安全分析平台(譬如SIEM,安全管理平台等)也遭遇到了诸多瓶颈,主要表现在以下几方面:
&&高速海量安全数据的采集和存储变得困难;
&&异构数据的存储和管理变得困难;
&&威胁数据源较小,导致系统判断能力有限;
&&对历史数据的检测能力很弱;
&&安全事件的调查效率太低;
&&安全系统相互独立,无有效手段协同工作;
&&分析的方法较少;
&&对于趋势性的东西预测较难,对早期预警的能力比较差;
&&系统交互能力有限,数据展示效果有待提高。
为了应对上述挑战,作为国内信息安全领导厂商的启明星辰依托十几年在信息安全分析领域积累的丰富经验和领先技术,在国内率先推出了具有自主知识产权的启明星辰泰合大数据安全分析平台(TSOC Big Data Security Analysis Platform,简称TSOC-BDSAP)。该平台帮助客户实现在规模不断扩大的异构海量数据如事件、流、网络原始流量、文件等信息中,结合流行的关联分析、机器学习、数理统计、实时分析、历史分析和人机交互等多种分析方法和技术,发现传统的安全产品无法检测的安全攻击和威胁,从而进一步保护客户的信息不受破坏,保障客户的业务安全稳定运行,为客户达成核心战略创造价值。
泰合大数据安全分析平台面向大型企事业单位、政府、组织机构等客户,提供一套完整的分布式数据采集框架及预处理过程,选用成熟的大数据存储架构,结合SQL、NewSQL和NoSQL技术,实现对异构安全数据的快速可靠的存储。平台提供了多种集中式和分布式数据分析方法,可实现对天量安全数据的实时分析与事后分析,同时还提供一套可视化的数据挖掘分析工具,借助于可视化人机界面,协助安全分析师灵活调整分析过程,发现数据价值。平台采用分布式处理技术在提升采集、存储与分析性能的同时,提供了友好的数据展示平台,采用丰富的数据展示组件,实现对安全数据集及分析结果的可视化展示,为安全管理人员呈现有价值的分析结果。
泰合TM大数据安全分析平台架构分为采集层、大数据层、分析层、管控层和呈现层,分别完成天量异构数据测采集、预处理、存储、分析和展示,采用多种分析方法,包括关联分析、机器学习、运维分析、统计分析、OLAP分析、数据挖掘和恶意代码分析等多种分析手段对数据进行综合关联,完成数据分析和挖掘的功能,并集成了业界领先的智能威胁情报管理功能,结合内外部威胁情报,为安全分析人员和管理人员提供快捷高效的决策支持。
泰合TM大数据安全分析平台采用的关键技术包括:
&&分布式海量数据存储技术和文件索引技术;
&&基于复杂事件处理(CEP)和分布式实时计算的流式分析技术;
&&基于Map/Reduce架构的批量数据处理技术;
&&大规模并行处理(MPP)数据库技术;
&&弹性搜索引擎技术;
&&交互式查询技术;
&&全包存储与原始流量还原与分析技术;
&&多种机器学习和数据挖掘技术;
&&动态沙箱虚拟执行技术;
&&云计算技术。
主要实现的核心功能有:安全信息的全文索引、大数据实时分析、大数据快速统计报表分析、网络流量元数据存储与行为分析、全包存储与原始流量还原分析、历史数据的关联分析和溯源、攻击路径分析、威胁情报管理与共享、海量数据可视化展示、大数据分析云平台。
启明星辰泰合TM大数据安全分析平台可帮助客户解决信息安全分析和管理过程中遇到的困难,提供强大有效的信息安全分析工具,保护已有投资,实现客户信息安全投资的增值,具体价值如下:
&&帮助客户解决海量异构数据的存储;
&&实现海量数据的实时和历史分析,了解当前及过去,并预测未来;
&&提高安全分析人员对安全事件的调查效率,使海量数据的分析变为现实;
&&为客户提供统一的安全威胁检测能力,实现事件、流、原始流量、用户身份、威胁情报的综合关联分析;
&&提供强大的APT分析能力和手段;
&&提供完整的取证能力,可定位至流和原始报文;
&&提供完善的威胁情报管理和分析,将情报信息转化为安全生产力;
&&支持全流量数据分析;
&&兼容现有SOC/SIEM,保护已有投资;
&&与云平台融合,方便管理维护;
&&丰富的可视化数据展示和人机交互界面。
启明星辰专门成立了泰合产品本部负责大数据安全分析领域及泰合系列管控类和审计类系统的研发、咨询、项目实施与运维。泰合产品本部分别在北京、上海、广州设有研发中心。
作为中国最早研发和最领先的安全管理平台之一,启明星辰泰合(TSOC)系列安管平台经过10多年的持续积累,获得了十多项发明专利,得到了国家多项专项基金的支持,并拥有目前国内最多的客户群,从2008年到2013年连续六年位居中国安全管理平台市场占有率第一,已经成为了安全管理平台领域的绝对领导者,并且也位居国内大数据安全分析领域的领导者阵营。
| 400-624-0-6038
& 启明星辰 版权所有
京公网安备号PHP做HTTP做接口服务怎样保证安全性?
现在有这样一个需求:
使用场景:PHP开发的WEB应用程序作为服务端,C开发的桌面应用作为客户端,客户端采用HTTP/POST调用WEB端提供的数据接口。
问题:HTTP协议是开放的,直接暴露给所有用户,怎样保证HTTP/POST调用方式的安全性?
这个涉及到两个方面问题,一个是接口访问认证问题,主要解决谁可以使用接口一个是数据数据传输安全,主要解决接口数据被监听接口访问权限:方案1:可以使用已有的接口解决方案SOAP RPC等等,他们已经有比较完善调用认证的解决方案,自己用google百度一下方案2:使用HTTP/POST方式(你上面说的),可以对固定参数+附加参数进行数字签名,常用的md5什么的,例如:获取一个信息,可以使用 信息标题+时间+key生成一个签名(sign),然后作为参数传递过去,服务器使用同样的方法进行校验,其中key双方都知道通讯密钥(也就是暗号)数据数据传输安全:这个没有什么好说的,各种对称加密算法 DES ASE等
已有帐号?
无法登录?
社交帐号登录一个旨在全球架设游戏数据平台的游戏网站,怎样才能拥有安全稳定的数据平台?_百度知道2629人阅读
数据库专题(16)
& & &Java数据库连接(JDBC)由一组用 &Java &编程语言编写的类和接口组成。JDBC &为工具/数据库开发人员提供了一个标准的 &API,使他们能够用纯Java &API &来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。
一、连接各种数据库方式:
&1、Oracle8/8i/9i数据库(thin模式) & &
Class.forName(&oracle.jdbc.driver.OracleDriver&).newInstance();& &
String &url=&jdbc:oracle:thin:@localhost:1521:orcl&;&//orcl为数据库的SID & &
String &user=&test&; & &
String &password=&test&; & &
Connection &conn= &DriverManager.getConnection(url,user,password);& &
& &2、DB2数据库 &
Class.forName(&com.ibm.db2.jdbc.app.DB2Driver &&).newInstance();& &
String &url=&jdbc:db2://localhost:5000/sample&; &//sample为你的数据库名 & &
String &user=&admin&; & &
String &password=&&; & &
Connection &conn= &DriverManager.getConnection(url,user,password);& &
& &3、Sql &Server7.0/2000数据库
Class.forName(&com.microsoft.jdbc.sqlserver.SQLServerDriver&).newInstance();& &
String&url=&jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb&;& &
//mydb为数据库 & &
String &user=&sa&; & &
String &password=&&; & &
Connection &conn= &DriverManager.getConnection(url,user,password);& &
& &4、Sybase数据库
Class.forName(&com.sybase.jdbc.SybDriver&).newInstance(); &&
String &url &=& &jdbc:sybase:Tds:localhost:5007/myDB&;//myDB为你的数据库名 & &
Properties &sysProps &= &System.getProperties(); & &
SysProps.put(&user&,&userid&); & &
SysProps.put(&password&,&user_password&); & &
Connection &conn= &DriverManager.getConnection(url, &SysProps);& &
& &5、Informix数据库&
Class.forName(&rmix.jdbc.IfxDriver&).newInstance(); &&
String &url &= & &
&jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=& &
user=password=testpassword&; &//myDB为数据库名 & &
Connection &conn= &DriverManager.getConnection(url); & &
& &6、MySQL数据库 &
Class.forName(&org.gjt.mm.mysql.Driver&).newInstance(); & &
String &url &=&jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1&& &
//myDB为数据库名 & &
Connection &conn= &DriverManager.getConnection(url); & &
& &7、PostgreSQL数据库&
Class.forName(&org.postgresql.Driver&).newInstance(); & &
String &url &=&jdbc:postgresql://localhost/myDB&&//myDB为数据库名 & &
String &user=&myuser&; & &
String &password=&mypassword&; & &
Connection &conn= &DriverManager.getConnection(url,user,password);& &
& &8、access数据库直连用ODBC的&
Class.forName(&sun.jdbc.odbc.JdbcOdbcDriver&) &; &
String &url=&jdbc:odbc:Driver={MicroSoft &Access &Driver&(*.mdb)};DBQ=&+application.getRealPath(&/Data/ReportDemo.mdb&);&
Connection &conn &=&DriverManager.getConnection(url,&&,&&); &
Statement &stmtNew=conn.createStatement() &;&
(只供查询之用。)
二、JDBC连接MySql方式
& & 下面是使用JDBC连接MySql的一个小的教程 & &&
& & 1、查找驱动程序
& & MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驱动程序为纯java驱动程序,不需做其他配置。
& & 2、动态指定classpath
& & 如果需要执行时动态指定classpath,就在执行时采用-cp方式。否则将上面的.jar文件加入到classpath环境变量中。
& & 3、加载驱动程序
& & Class.forName(com.mysql.jdbc.Driver);
& & System.out.println(Success loading Mysql Driver!);
}catch(Exception e)
& & System.out.println(Error loading Mysql Driver!);
& & e.printStackTrace();
& & 4、设置连接的url
& & jdbc:mysql://localhost/databasename[?pa=va][&pa=va]
三、以下列出了在使用JDBC来连接Oracle数据库时可以使用的一些技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能(系转载)。
  1、在客户端软件开发中使用Thin驱动程序
  在开发Java软件方面,Oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二种用于数据库中的Java存储过程等服务器端软件。在客户机端软件的开发中,我们可以选择OCI驱动程序或Thin驱动程序。OCI驱动程序利用Java本地化接口(JNI),通过Oracle客户端软件与数据库进行通讯。Thin驱动程序是纯Java驱动程序,它直接与数据库进行通讯。为了获得最高的性能,Oracle建议在客户端软件的开发中使用OCI驱动程序,这似乎是正确的。但我建议使用Thin驱动程序,因为通过多次测试发现,在通常情况下,Thin驱动程序的性能都超过了OCI驱动程序。
  2、关闭自动提交功能,提高系统性能
  在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能,如下所示:
  conn.setAutoCommit(false);
  值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。
  3、在动态SQL或有时间限制的命令中使用Statement对象
  在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。
  此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。
  4、利用helper函数对动态SQL命令进行格式化
  在创建使用Statement对象执行的动态SQL命令时,我们需要处理一些格式化方面的问题。例如,如果我们想创建一个将名字O'Reilly插入表中的SQL命令,则必须使用二个相连的&''&号替换O'Reilly中的&'&号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法,然后在连接字符串心服用公式表达一个SQL命令时,使用创建的helper方法。与此类似的是,我们可以让helper方法接受一个Date型的值,然后让它输出基于Oracle的to_date()函数的字符串表达式。
  5、利用PreparedStatement对象提高数据库的总体效率
  在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。
  6、在成批处理重复的插入或更新操作中使用PreparedStatement对象
  如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():
PreparedStatement pstmt3D
((OraclePreparedStatement)
pstmt).setExecuteBatch(30);
pstmt.executeUpdate();
  调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。
  7、使用Oracle locator方法插入、更新大对象(LOB)
  Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理,尤其是Thin驱动程序不支持利用PreparedStatement对象的setObject()和setBinaryStream()方法设置BLOB的值,也不支持利用setCharacterStream()方法设置CLOB的值。只有locator本身中的方法才能够从数据库中获取LOB类型的值。可以使用PreparedStatement对象插入或更新LOB,但需要使用locator才能获取LOB的值。由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取LOB的值。
  8、使用SQL92语法调用存储过程
  在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。
  9、使用Object SQL将对象模式转移到数据库中
  既然可以将Oracle的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建Java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中添加方法。尽管这样作在Java中没有什么问题,但由于操作都是在数据库之外进行的,因此其他访问数据库的应用软件无法利用对象模式。如果利用Oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式,不但Java应用程序可以使用应用软件的对象模式,其他需要共享你的应用中的数据和操作的应用软件也可以使用应用软件中的对象模式。
  10、利用SQL完成数据库内的操作
  我要向大家介绍的最重要的经验是充分利用SQL的面向集合的方法来解决数据库处理需求,而不是使用Java等过程化的编程语言。
  如果编程人员要在一个表中查找许多行,结果中的每个行都会查找其他表中的数据,最后,编程人员创建了独立的UPDATE命令来成批地更新第一个表中的数据。与此类似的任务可以通过在set子句中使用多列子查询而在一个UPDATE命令中完成。当能够在单一的SQL命令中完成任务,何必要让数据在网上流来流去的?我建议用户认真学习如何最大限度地发挥SQL的功能
应用Java技术实现数据库应用系统
  Java 语言是Sun MicroSystems 公司于1995年正式命名并推出的一种面向对象的编程语言-OOP(abbr.Object Oriented Programming)。Sun 公司说:Java 程序设计语言被设计成是 by programmers for programmers,其随着 Internet 的发展而广为流行。用它开发的系统“一次开发,到处运行”的特色以及程序开发设计时所体现出的面向对象的思想深深地触动着人们。它的语言简洁、集多种程序设计语言之大成,且面向对象、具有可移植性、分布性、安全性、高性能等特色。Java在向Internet/Intranet,甚至计算机世界的各个领域渗透,慢慢改变着人们的思维。而今Internet
热浪一浪高过一浪,从外部世界走向企业内部形成Intranet,促进了Java 技术的利用开发。计算机业界中的IBM、ORACAL 、APPLE、Sun、Netscape五家公司还联合推出“网络计算机(NC-1)”规范。抛开“Wintel”臃肿不堪的体系结构,使用户端价格低廉、易于使用,并成为能够连接网络的简单计算机-NC(Network Computer),即所说的“瘦客户”机,NC 支持Java 虚拟机(JVM),能够运行Java开发的应用程序(Application)和小程序(Applet)并支持多媒体应用。NC
和Java 的结合诞生了新的时代:网络计算机时代。就连Sun的冤家对头Microsoft的比尔.盖茨也不得不承认:“Java是长时间以来最卓越的程序设计语言”。
  一、 Java 数据库基础 JDBC API
  Java语言在数据库应用方面,特别在基于Web 的B/S结构的在线数据库应用方面的烦琐复杂配置等,并不能使用户和程序开发双方都十分满意。SunSoft虽提供了用Java语言编写成的Java与数据库的接口规范JDBC(Java DataBase Connectivity,而JavaSoft说JDBC并不代表什么),使Java程序可以通过统一标准规范的JDBC API来与不同的数据库通信。确保了“100%纯Java”的解决方案。JDBC API 定义了Java中的类和接口,表示数据库连接、SQL 指令、结果集合等。它允许Java程序员发送SQL
指令并处理结果。JDBC API 提供两种主要接口:一是面向开发人员的java.sql程序包,使得Java程序员能够进行数据库连接,执行SQL查询,并得到结果集合。Java2 的java.sql包提供了6个类和18个接口,下文将介绍;另一是面向底层数据库厂商的JDBC Drivers ,目前为止,Java2的JDBC Drivers仅提供下述四种类型的数据库驱动方式,且各有利弊:
  (1) JDBC-ODBC bridge plus ODBC driver 方式:JDBC-ODBC 桥接方式利用微软的开放数据库互连接口(ODBC API)同数据库服务器通讯,客户端计算机首先应该安装并配置ODBC driver 和JDBC-ODBC bridge两种驱动程序。这是Applets访问你的数据库最可能的解决方式,但这对Internet 和Intranet 用户而言简直是一个非常令人讨厌和麻烦的解决方案。
  (2) Native-API partly Java driver方式:这种驱动方式将数据库厂商的特殊协议转换成Java代码及二进制类码,使Java 数据库客户方与数据库服务器方通信。例如:Oracle用SQLNet协议,DB2用IBM 的数据库协议。数据库厂商的特殊协议也应该被安装在客户机上。这也是令人讨厌和麻烦的解决方案。
  (3) JDBC-Net pure Java driver方式:这种方式是纯Java driver。数据库客户以标准网络协议(如HTTP、SHTTP)同数据库访问服务器通信,数据库访问服务器然后翻译标准网络协议成为数据库厂商的专有特殊数据库访问协议(也可能用到ODBC driver)与数据库通信。对Internet 和Intranet 用户而言这是一个理想的解决方案。Java driver 被自动的,以透明的方式随Applets自Web服务器而下载并安装在用户的计算机上。
  (4) Native-protocol pure Java driver方式:这种方式也是纯Java driver。数据库厂商提供了特殊的JDBC协议使Java数据库客户与数据库服务器通信。然而,将把代理协议同数据库服务器通信改用数据库厂商的特殊JDBC driver。这对Intranet 应用是高效的,可是数据库厂商的协议可能不被防火墙支持,缺乏防火墙支持在Internet 应用中会存在潜在的安全隐患。
  综上四种方式中,只有第三、四种方式的驱动支持 Applet的零安装。因为JDBC drivers 完全用Java 写成,并从Web 服务器上随applet下载。为了支持零安装,驱动程序应该被放在Web上,并与applet 在相同目录。而第四种存在安全隐患,第三种产品为数不多,现今较成熟的IDS JDBC driver属于此种(),但也要用到ODBC driver辅助。
  即便如此,利用Java技术开发单机环境应用程序,局域网范围或Intranet环境下的应用程序、动态Web应用(Live Intranet)等,Java语言是高效、安全、稳定的。Java语言已赢得了众多厂商的支持,基于其上的Java API-JDBC也发展迅速。Sun承诺任何Java Applet 或Java应用软件都能够与数据库结合,并且仍将不遗余力的支持未来Java技术的发展。Java语言的跨平台特性,使之成为Internet和Intranet环境下开发数据库应用系统的理想选择方案。
 二、 Java 数据库应用系统的实现
  基于此,笔者用Java 2 SDK,Standard Edition Version 1.2.1版本为开发工具,以已经成功开发的Java数据库应用系统案例为模板,结合Java2程序语句及java.sql包,介绍一下Java数据库应用系统开发的具体实现步骤、方法等。
  1.设置数据库的连接
  为了利用JDBC,你将需要一个数据库服务器和一个数据库驱动器。因为大多数读者的计算机已经安装了Windows95/98,我就用微软的 Access 97做为我的数据库服务器(具体为Action.mdb),当然你也可以用其它的数据库作为数据库服务器。因为对JDBC而言,数据库服务器的类型无关紧要,JDBC会提供一个独立于数据库服务器的访问数据库的方法。这是JDBC的主要优势所在。
  你将还需要一个数据库驱动器,用来提供JDBC与你的数据库的连接。作者选用了较可能的JDBC-ODBC bridge 方式。为此需设置32-bit ODBC的数据源,选择System DSN(数据可被多用户访问,User DSN不同),增加新的数据源,配置新数据源的路径为Action.mdb数据库服务器的所在位置。
  安装完成,Java程序员可以进行编制程序的阶段。首先程序员引用java.sql 包中相应的类与接口来进行对JDBC驱动器的管理:用Class 类中的 forName() 方法装入 JDBC驱动器,以JDBC-ODBC bridge 方式为例,装入JDBC驱动执行的语句为Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);用DriverManager 类中getDrivers()方法返回所有安装在你的计算机中的JDBC驱动器,getConnection()建立与数据库的连接等。getConnection()方法提供下面三种形式:
  getConnection(String url)
  getConnection(String url,String userID,String password)
  getConnection(String url,Properties arguments)
  其中字符串url表示数据库服务器所在处的特殊的URL。URL是被用来与不同的数据库驱动建立连接的统一网络资源,其形式如下:
  jdbc:subprotocol:subname
  所有的JDBC数据库协议开始于jdbc:。Subprotocol是被用来辨别JDBC驱动方式的。例如:JDBC-ODBC bridge 用jdbc:odbc:subname 这种用户协议形式,IDS JDBC driver 用jdbc:ids:subname 形式。数据库协议的subname标识数据库并且与subprotocol 和JDBC驱动方式有关。例如,以JDBC-ODBC bridge方式,我用下面的URL形式建立与数据源Tend建立连接:
  jdbc:odbc:tend
  getDrivers()和getConnection()方法是DriverManager类中最重要的方法,还有其它一些方法在此略。
  2.与数据库进行连接
  用DriverManager类的getConnection() 方法建立起与数据库连接,getConnection()返回一个对象,此对象是java.sql包中的Connection 接口对象。该接口定义了与之连接的数据库交互的一些方法、常量等,这些方法用来管理数据库的连接、获得连接的信息、提交数据库处理事件并且预处理可执行的SQL语句。下面是Connection 接口的一些重要的方法:
  close()-关闭一个数据库连接
  getMetaData()-返回一个DatabaseMetaData 接口对象,该接口能被用来获得有关数据库的详细信息,包括数据库结构和数据库内容等。
  createStatement()-创建一个SQL语句对象。&
  prepareStatement()-用SQL字符串创建一个SQL 预处理语句对象。预处理语句对象是可以被高效执行的预编译过的SQL语句。
  下面提供一段程序,实现了JDBC的驱动及数据库的连接,供参考:
  import java.sql.*;
  import java.util.*;
  class ConnectApp {
  public static void main(String args[]) {
  // Load the JDBC-ODBC bridge driver方式
  Class.forName(&sun.jdbc.odbc.JdbcOdbcDriver&);
  String url=&jdbc:odbc:tend&;
  // 连接到数据库
  Connection connection=DriverManager.getConnection(url);
  // 得到数据库的信息
  DatabaseMetaData meta=connection.getMetaData();
  3.利用结果集工作
  数据库查询被执行后,查询的结果作为一个两维(行、列)数据表返回。ResultSet接口被用来提供访问查询结果的数据表,查询结果被当作ResultSet对象而返回,ResultSet对象提供“指针”,指针每次访问数据库表的一行。当ResultSet对象从查询中返回时,指针初始指向数据表的第一行,ResultSet 的next() 方法用来移动指针到数据表的下一行,如果到达表尾,next() 方法返回假的布尔值-false,否则为真。ResultSet接口提供大量的获得数据的方法,这些方法返回数据表中任意位置的数据,不论是基本数据类型或引用数据类型的数据。getMetaData()方法返回ResultSetMetaData接口对象,该对象包含数据表行的信息。ResultSetMetaData
接口提供变量和从ResultSet对象获取信息的方法,getColumnCount() 方法返回数据表的列数,getColumnName() 方法返回提取的数据库中的列名称,即数据库字段名,getColumnType() 方法返回列的SQL类型,ResultMetaData中其它的方法被用访问列的额外属性,如列的显示宽度、数据格式及读/写状态等。注意ResultSet中的列其始索引号为1而不是0。下面提供一段程序:
  static void displayResults(ResultSet r) throws SQLException {
  // 获得数据结果集合
  ResultSetMetaData rmeta = r.getMetaData();
  // 确定数据集的列数,亦字段数
  int numColumns=rmeta.getColumnCount();
  // 输出每一个数据值
  for(int i=1;i&=numC++i) {
  if(i   System.out.print(rmeta.getColumnName(i)+& | &);
  System.out.println(rmeta.getColumnName(i));
  while(r.next()){
  for(int i=1;i&=numC++i) {
  if(i   System.out.print(r.getString(i)+& | &);
  System.out.println(r.getString(i).trim());
  4.执行SQL语句
  SQL代表着结构化查询语言,即 Structured Query Language的缩写。SQL是用来同数据库服务器交互的一种语言。SQL被IBM在70-80年代开发,80年代后进行了标准化。但标准已经更新,现已出现好几个版本。另外一些数据库厂商也增加扩展了一些特殊的功能语句等。JDBC需要与JDBC兼容的SQL驱动支持,即支持ANSI SQL72标准。SQL有很多用途,当SQL语句被用来创建、设计数据库时,它是一个数据定义语言;当用来向数据库插入信息、更新或删除已经存在的信息时,它是一个数据维护语言;当从数据库中查询提取信息时,它是数据查询语言。有关SQL语句的一些语法规则,请参考有关书籍,在此略。Java语言设计java.sql
包的目的就是让你执行符合Java的SQL语句。java.sql中的Statement 接口定义了一些方法,这些方法通过SQL语句的执行来与数据库交互,也支持通过ResultSet对象返回查询结果集合的处理和提供查询处理机制的控制。execute()、 executeQuery() 和executeUpdate() 方法是Statement接口的主要方法。executeQuery() 方法执行一个 SQL语句(如SELECT语句等)并查询返回一个ResultSet对象。executeUpdate() 方法执行一个SQL
语句 (如INSERT、UPDATE、DELETE 语句等)并更新数据库、返回SQL查询结果集合的行数(记录数),如果结果集合为空则行数为0。
  Java中有关SQL语句的程序片段如下:
  import java.sql.*;
  import java.util.*;
  class ResultApp {
  public static void main(String args[]) {
  // Load the JDBC-ODBC bridge driver方式
  Class.forName(&sun.jdbc.odbc.JdbcOdbcDriver&);
  String url=&jdbc:odbc:tend&;
  // 连接到数据库
  Connection connection=DriverManager.getConnection(url);
  Statement statement = connection.createStatement();
  String sql=&SELECT * FROM courses&;
  // 执行SQL 语句得到结果集合
  ResultSet result = statement.executeQuery(sql);
  displayResults(result);
  // 关闭数据库连接
  connection.close();
  }catch(Exception ex){
  System.out.println(ex);
  System.exit(0);
  5.数据库安全性
  数据库的安全性问题是很多机构非常关心的问题。因为数据库中可能包含一些比较敏感的信息需要加以限制访问范围;数据的完整性也是极为重要的,未授权的肆意修改数据库信息可能造成公司巨大的损失;数据的有效提供也是重要的,Internet/Intranet用户随时需要信息,这就常常需要提供每天24小时、每周7天的可访问。JDBC支持数据库安全吗?答案不是非常满意。当前JDBC要依靠数据库服务器自身提供安全保护。企业范围的数据库服务器,如微软的SQL Server提供用户ID和口令,然而,即使是口令保护也不是非常安全的,如果口令在客户与服务器之间未加密,它们能很容易被截获而危及安全。
  Java的安全机制很高,Java2改进了沙箱,为用户和程序人员提供了灵活的安全管理及配置工具。Applet程序安全性更加灵活,建议利用Java的安全机制及提供的一些工具来进行数据库应用系统的开发。
  Java2(JDK1.2)提供的安全工具如下:
  用jar工具打包你的applets成为Java 存档文件 (JAR);
  用jarsigner对JAR文件进行数字签名;
  用policytool对信任applets的Java运行环境Java Runtime Environment (JRE)配置;
  用keytool进行数字证书的签证;
 三、 Java 的数据库应用开发展望
  至此,你已知道:要进行Java 数据库应用程序的设计,需要具备多方面的技能,包括了解或熟练数据库驱动程序、SQL( 结构化查询语言)以及java.sql包所包含的类、接口等。JavaSoft 已经注意到了Java 在数据库程序设计方面的棘手而复杂,他们现在正在开发新的同Java一样容易使用的产品JavaBlend ,该产品将大大简化利用JDBC构建数据库应用系统的过程。JavaBlend 将自动镜像Java 对象成为存储在数据库中的信息。所有对对象的操作,都将产生与之镜像的数据库的动作,包括对存储在数据库中信息的自动查询、更新等。一旦Java
的对象到数据库镜像(Java object-to-database mapping)被成功建立,JavaBlend 将免费发放给Java 程序员,以使Java 程序员从利用繁琐SQL语句、结果集合解决方案过渡到利用JavaBlend 把对Java 对象的方法调用相应地自动转化成SQL语句和结果集合这一简单方案。这将使JDBC和SQL知识在数据库开发时不必考虑过多,而使程序员专心于用户业务方案的提供解决。JavaBlend目前并不包含在JDK 1.2中。
  Java 语言及其技术是当今世界程序设计语言的主流。应用Java 技术实现数据库应用系统是未来的发展方向,Java 的数据库应用现已成功地应用于商业、政府及大学等领域,应用才刚刚起步。相信不久的将来,Java 技术将更加完善成熟。Java的数据库应用也将遍地开花。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:193810次
积分:1892
积分:1892
排名:第15049名
原创:49篇
转载:24篇
评论:12条
(6)(12)(1)(6)(1)(12)(6)(5)(6)(6)(6)(1)(1)(3)(1)

我要回帖

更多关于 支付宝实名认证接口 的文章

 

随机推荐