仓酷云

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

[学习教程] JAVA编程:JDBC毗连各类数据库履历技能集萃

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,技能|数据|数据库  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命令时,我们必要处置一些格局化方面的成绩。比方,假如我们想创立一个将名字OReilly拔出表中的SQL命令,则必需利用二个相连的“”号交换OReilly中的“”号。完成这些事情的最好的办法是创立一个完成交换操纵的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编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)
若相依 该用户已被删除
沙发
发表于 2015-1-20 15:53:49 | 只看该作者
是一种使用者不需花费很多时间学习的语言
活着的死人 该用户已被删除
板凳
发表于 2015-1-29 12:47:20 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
灵魂腐蚀 该用户已被删除
地板
发表于 2015-1-30 23:07:37 来自手机 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
深爱那片海 该用户已被删除
5#
发表于 2015-2-4 13:13:51 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
柔情似水 该用户已被删除
6#
发表于 2015-2-4 15:25:02 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
兰色精灵 该用户已被删除
7#
发表于 2015-2-10 02:52:46 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
金色的骷髅 该用户已被删除
8#
发表于 2015-2-12 02:57:01 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
飘灵儿 该用户已被删除
9#
发表于 2015-3-2 21:19:45 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
分手快乐 该用户已被删除
10#
发表于 2015-3-11 06:22:12 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
第二个灵魂 该用户已被删除
11#
发表于 2015-3-17 22:10:26 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
只想知道 该用户已被删除
12#
发表于 2015-3-25 03:47:05 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 15:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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