仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 359|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA网页设计JDBC毗连数据库履历集萃

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。毗连数据库  Java数据库毗连(JDBC)由一组用Java编程言语编写的类和接口构成。JDBC为工具/数据库开辟职员供应了一个尺度的API,使他们可以用纯JavaAPI来编写数据库使用程序。但是各个开辟商的接口其实不完整不异,以是开辟情况的变更会带来必定的设置变更。本文次要汇合了分歧数据库的毗连体例。

  1、毗连各类数据库体例速查表

  上面排列了各类数据库利用JDBC毗连的体例,能够作为一个手册利用。

  1、Oracle8/8i/9i数据库(thin形式)

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Stringurl="jdbc:oracle:thin:@localhost:1521:orcl";//orcl为数据库的SID
Stringuser="test";
Stringpassword="test";
Connectionconn=DriverManager.getConnection(url,user,password);

  2、DB2数据库

Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
Stringurl="jdbc:db2://localhost:5000/sample";//sample为你的数据库名
Stringuser="admin";
Stringpassword="";
Connectionconn=DriverManager.getConnection(url,user,password);

  3、SqlServer7.0/2000数据库

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb为数据库
Stringuser="sa";
Stringpassword="";
Connectionconn=DriverManager.getConnection(url,user,password);

  4、Sybase数据库

Class.forName("com.sybase.jdbc.SybDriver").newInstance();
Stringurl="jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名
PropertiessysProps=System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connectionconn=DriverManager.getConnection(url,SysProps);

  5、Informix数据库

Class.forName("com.informix.jdbc.IfxDriver").newInstance();
Stringurl="jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";//myDB为数据库名
Connectionconn=DriverManager.getConnection(url);

  6、MySQL数据库

Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Stringurl="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB为数据库名
Connectionconn=DriverManager.getConnection(url);

  7、PostgreSQL数据库

Class.forName("org.postgresql.Driver").newInstance();
Stringurl="jdbc:postgresql://localhost/myDB"//myDB为数据库名
Stringuser="myuser";
Stringpassword="mypassword";
Connectionconn=DriverManager.getConnection(url,user,password);

  8、access数据库直连用ODBC的

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:odbc:Driver={MicroSoftAccessDriver(*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connectionconn=DriverManager.getConnection(url,"","");
StatementstmtNew=conn.createStatement();

  2、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、加载驱动程序

try{
 Class.forName(com.mysql.jdbc.Driver);
 System.out.println(SuccessloadingMysqlDriver!);
}catch(Exceptione)
{
 System.out.println(ErrorloadingMysqlDriver!);
 e.printStackTrace();
}

  4、设置毗连的url

jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

  3、以以下出了在利用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():

PreparedStatementpstmt3Dnull;
try{
 ((OraclePreparedStatement)pstmt).setExecuteBatch(30);
...
pstmt.executeUpdate();
}

  挪用setExecuteBatch()时指定的值是一个下限,当到达该值时,就会主动地激发SQL命令实行,尺度的executeUpdate()办法就会被作为批处置送到数据库中。我们能够经由过程挪用PreparedStatement类的sendBatch()办法随时传输批处置义务。

  7、利用Oraclelocator办法拔出、更新年夜对象(LOB)

  Oracle的PreparedStatement类不完整撑持BLOB和CLOB等年夜对象的处置,特别是Thin驱动程序不撑持使用PreparedStatement对象的setObject()和setBinaryStream()办法设置BLOB的值,也不撑持使用setCharacterStream()办法设置CLOB的值。只要locator自己中的办法才干够从数据库中猎取LOB范例的值。可使用PreparedStatement对象拔出或更新LOB,但必要利用locator才干猎取LOB的值。因为存在这二个成绩,因而,我倡议利用locator的办法来拔出、更新或猎取LOB的值。

  8、利用SQL92语法挪用存储历程

  在挪用存储历程时,我们可使用SQL92或OraclePL/SQL,因为利用OraclePL/SQL并没有甚么实践的优点,并且会赐与后保护你的使用程序的开辟职员带来贫苦,因而,我倡议在挪用存储历程时利用SQL92。

  9、利用ObjectSQL将对象形式转移到数据库中

  既然能够将Oracle的数据库作为一种面向对象的数据库来利用,就能够思索将使用程序中的面向对象形式转到数据库中。今朝的办法是创立Javabean作为假装的数据库对象,将它们的属性映照到干系表中,然后在这些bean中增加办法。只管如许作在Java中没有甚么成绩,但因为操纵都是在数据库以外举行的,因而其他会见数据库的使用软件没法使用对象形式。假如使用Oracle的面向对象的手艺,能够经由过程创立一个新的数据库对象范例在数据库中仿照其数据和操纵,然后利用JPublisher等工具天生本人的Javabean类。假如利用这类体例,不仅Java使用程序可使用使用软件的对象形式,其他必要共享你的使用中的数据和操纵的使用软件也能够利用使用软件中的对象形式。

  10、使用SQL完成数据库内的操纵

  我要向人人先容的最主要的履历是充实使用SQL的面向汇合的办法来办理数据库处置需求,而不是利用Java等历程化的编程言语。

  假如编程职员要在一个表中查找很多行,了局中的每一个行城市查找其他表中的数据,最初,编程职员创立了自力的UPDATE命令来成批地更新第一个表中的数据。与此相似的义务能够经由过程在set子句中利用多列子查询而在一个UPDATE命令中完成。当可以在单一的SQL命令中完成义务,何须要让数据在网下流来流往的?我倡议用户仔细进修怎样最年夜限制地发扬SQL的功效。
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
乐观 该用户已被删除
沙发
发表于 2015-1-20 15:19:42 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
小魔女 该用户已被删除
板凳
发表于 2015-1-29 06:15:22 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
山那边是海 该用户已被删除
地板
 楼主| 发表于 2015-2-9 20:22:16 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
不帅 该用户已被删除
5#
发表于 2015-2-9 22:20:26 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-28 00:44:54 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
分手快乐 该用户已被删除
7#
发表于 2015-3-9 16:41:33 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
冷月葬花魂 该用户已被删除
8#
发表于 2015-3-17 00:09:00 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
变相怪杰 该用户已被删除
9#
发表于 2015-3-23 08:11:15 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 19:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表