JDBC学习2

 

一、      JDBC的抽象接口

         3. sql包中的主要接口和相互关系

这些接口都存放在Javasql包中,它们的名称和基本功能是:

l         Java.sql.DriverManager

管理驱动器,支持驱动器与数据库连接的创建

l         Java.sql.Connection

Connection 对象代表与数据库的连接。连接过程包括所执行的 SQL 语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。

l         Java.sql.Statement

Statement 对象用于将 SQL 语句发送到数据库中。

实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:StatementPreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement由方法 createStatement 所创建。用于执行不带参数的简单 SQL 语句;

PreparedStatement由方法 prepareStatement 所创建。用于执行带或不带 IN 参数的预编译 SQL 语句;

CallableStatement 对象用于执行对数据库已存储过程的调用。

该类常用方法:

方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。

方法 executeUpdate 用于执行 INSERTUPDATE DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE DROP TABLEINSERTUPDATE DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能,所以本概述后面将在单独一节中对其进行介绍。

l         Java.sql.ResultSet

代表执行SQL声明后产生的数据结果

 

二、      连接各种数据库方式速查表

    下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。

    1Oracle8/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);

    2DB2数据库

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);

    3Sql 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);

    4Sybase数据库

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);

    5Informix数据库

Class.forName("com.informix.jdbc.IfxDriver").newInstance();

String url =

"jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;

user=testuser;password=testpassword"; //myDB为数据库名

Connection conn= DriverManager.getConnection(url);

    6MySQL数据库

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);

    7PostgreSQL数据库

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);

    8access数据库直连用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() ;

 

三、      oracle中的使用

1 注册

Driver driver = null;

String url = null;

String user = null;

String password = null;

driver = (Driver) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

DriverManager.registerDriver(driver);

url = "jdbc:oracle:thin:@10.40.90.103:1521:zxin";

user = "system";

password = "manager";

conn = DriverManager.getConnection(url, user, password);      

 

2 Java中执行sql语句

v      sqlStr = "begin update zxinoda.users set name=? where id=?; commit; end;";

      stmt = conn.prepareStatement(sqlStr);

      stmt.setString(1, "gaox1");

      stmt.setInt(2, 1);

      stmt.executeUpdate();

v      sqlStr = "select id, name, password from zxinoda.users where id=?";

      stmt = conn.prepareStatement(sqlStr);

      stmt.setInt(1, 1);

      rs = stmt.executeQuery();         //简单sql语句执行能够得到结果集

      while (rs.next()) {

          System.err.println("id="+rs.getInt(1)+", name="+rs.getString(2));

      }

3 Java中调用存储过程

v      sqlStr = "{ call zxinoda.sp_addsoftphone(?, ) }";

          stmt = conn.prepareCall(sqlStr);

          stmt.setString(1, "6130444");

          stmt.executeUpdate();

v         sqlStr = "{ call zxinoda.sp_addsmrcv(?, ?) }";

          stmt = conn.prepareCall(sqlStr);

          stmt.setInt(1, 1);

          stmt.registerOutParameter(2, OracleTypes.INTEGER);

          stmt.executeQuery();

          System.err.println("return="+stmt.getInt(1));       //注意:采用存储过程时是不能得到结果集的,不能使用rs.getInt(1),     

v            sqlStr = "{ call zxinoda.sp_getuserinfo5(?,?)}";

          stmt = conn.prepareCall(sqlStr);

          stmt.setInt(1, 1);

          stmt.registerOutParameter(2, OracleTypes.CURSOR);

          stmt.executeQuery();

          rs = ((OracleCallableStatement)stmt).getCursor(2);    //注意:采用存储过程时是不能得到结果集的,若需要得到结果集,需要使用游标,     

        while (rs.next()){

             System.err.println("id="+rs.getInt(1)+", login="+rs.getString(2));

                                           

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值