标题:ORACLE和java混合编程设计过程,求助
只看楼主
hf8813264
Rank: 1
等 级:新手上路
帖 子:22
专家分:5
注 册:2009-6-2
结帖率:33.33%
已结贴  问题点数:20 回复次数:5 
ORACLE和java混合编程设计过程,求助
先用SQL语句在ORACLE中建立若干个表,在通过JAVA做一个CS模式的客户端进行管理,本人初学,麻烦高手教一下大致过程,谢谢
搜索更多相关主题的帖子: java ORACLE 设计 
2010-12-13 15:10
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
得分:20 
JDBC编程步骤:

l 注册加载JDBC驱动程序;

注册加载驱动driver,也就是强制类加载:

其注册加载JDBC驱动有三种方法:

方法一:Class.forName(DriverName); 其中DriverName=Driver包名。Driver类名;

Oracle的DriverName=“oracle.jdbc.driver.OracleDriver“;

MySql的DriverName=“com.mysql.jdbc.Driver“;

SQLServer的DriverName=“com.microsoft.jdbc.sqlserver.SQLServerDriver“;

方法二:Class.forName(DriverName).newInstance();

方法三:直接创建一个驱动对象:new oracle.jdbc.driver.OracleDriver();

 

l 建立与数据库的连接(connection);

Connection con=DriverManager.getConnection(String URL, String username, String  password);

Connection连接是通过DriverManager的静态方法getConnection(…..)来得到的,这个方法的实质是把参数传到实际的Driver中的connection()方法中来获得数据库连接的。

数据库中的URL值是由连接数据库的协议和数据库的ip地址及端口号还有要连接的数据库的库名(DatabaseName)即

1) Oracle  URL格式为:

jdbc:oracle:thin:(协议)@xxx。Xxx。xxx。xxx:xxx(ip地址及端口号):xxx(所使用的数据库名字)

例:jdbc:oracle:thin:@localhost:1521:ambow;

2)MySql URL的写法:

例:jdbc:mysql:// localhost:3306 / 数据库名;

3)SqlServer的写法:

例:jdbc:microsoft:sqlserver://localhost:1433/数据库名

 

java -Djdbc.drivers=驱动的完整类名

使用虚拟机参数,加载驱动 -D表示为虚拟机参数赋值

java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver:com.mysql.jdbc.Driver

l 创建一个statement或preparedStatement(发送sql请求);

Statement stm=con.createStatement();

PreparedStatement  pstm=con.prepareStatement(sql);

l 执行sql语句;

ResultSet rs=stm.executeQuery(sql);

ResultSet rs=pstm.executeQuery();

l 遍历获取处理结果集(只对查询语句select)

Whle(rs.next()){

System.out.print(rs.getString("列名1") + " ");

System.out.print(rs.getString("列名1") + " ");

System.out.println(rs.getString("列名3"));

}

ResultSet中的next()方法:

1. 判断是否存在下一条记录

2. 将游标移向下一条记录

Getxxx(字段名或字段序号)//注意:字段序号从1开始。

l 关闭statement,resutltset,Connection语句;

使用Connection对象获得一个Statement,Statement中的executeQuery(String sql)方法可以使用select语句查询,并且返回一个结果集ResutltSet通过遍历这个结果集,可以获得select语句的查询结果,ResultSet的next()方法会操作一个游标从第一条记录的前边开始读取,直到最后一条记录。executeUpdate(String sql)方法用于执行DDL和DML语句,可以update,delete,insert操作。

注意:关闭操作必须执行,因为这些资源是不会自动释放的,必须要自己关闭。要按先ResultSet结果集,后statement或preparedStatement,最后Connection的顺序关闭资源,因为statement和ResultSet是需要连接时才可以使用的,所以在使用结束之后有可能其他的Statement还需要连接,所有不能先关闭Connection。

其整个步骤代码如下:

package com.ambow.day19.jdbc;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

/*

 * JDBC编写五大步骤:

 * 说明:在main方法后不声明可能要抛出的异常,而在代码中用try....catch....来交给异常类来捕获处理。

 * 若是直接声明异常将由JVM来处理,这样,JVM资源将会被逐渐用完,这样JVM的运行速度会越来越慢。

 * 缺点:当我们将JDBC与数据库连接时都要重复写连接数据库和关闭数据库的代码,而这些代码是不需要改动的。

 * 这样比较麻烦。

 * 优化方法:将连接数据库连接和关闭数据库的代码封装到另一个类中;参见类JDBCTest2.java和JDBCConAndClo.java;

 */

public class JDBCTest1 {

public static void main(String args[]) {

Connection con = null;

Statement stm = null;

ResultSet rs = null;

String URL = "jdbc:oracle:thin:@localhost:1521:ambow";

String user = "system";

String password = "wqq123";

try {

// 1.注册并加载JDBC驱动程序:有三种方法:

//方法一:

Class.forName("oracle.jdbc.driver.OracleDriver");

 

//方法二:

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

 

//方法三:直接建一个驱动对象:

//new oracle.jdbc.driver.OracleDriver();

 

// 2.建立与数据库的连接:

con = DriverManager.getConnection(URL, user, password);

 

// 判断是否连接成功

if (!con.isClosed()) {

System.out.println("数据库连接成功。");

} else {

System.out.println("数据库连接失败。");

}

// 3.执行sql语句:

String sql = "select * from s_dept";

// 创建一个statement(发送sql)

stm = con.createStatement();

// 执行查询sql语句

rs = stm.executeQuery(sql);

// 4.获取sql结果集:

while (rs.next()) {

// 将数据库各个字段名类型转换为java中类型(getXXX方法)

System.out.print(rs.getString("id") + " ");

System.out.print(rs.getString("name") + " ");

System.out.println(rs.getString("region_id"));

}

 

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}finally {

// 5.关闭数据库(规则:顺着进,倒着关),释放资源:

try {

if (rs != null) {

rs.close();

rs = null;

}

if (stm != null) {

stm.close();

stm = null;

}

if (con != null) {

con.close();

con = null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}


你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-12-13 16:26
hf8813264
Rank: 1
等 级:新手上路
帖 子:22
专家分:5
注 册:2009-6-2
得分:0 
回复 2楼 lampeter123
感谢版主大人,能加个QQ吗,以后有什么事情好请教你,540682695
2010-12-15 13:37
hf8813264
Rank: 1
等 级:新手上路
帖 子:22
专家分:5
注 册:2009-6-2
得分:0 
回复 2楼 lampeter123
我用navicate创建了几张表格,请问你一下,怎么设置外键啊
2010-12-17 11:03
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
得分:0 
程序代码:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for t1
-- ----------------------------
CREATE TABLE `t1` (
  `id1` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id1`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

-- ----------------------------
-- Table structure for t2
-- ----------------------------
CREATE TABLE `t2` (
  `id` int(11) NOT NULL default '0',
  `id1` int(11) default NULL,
  PRIMARY KEY  (`id`),
  KEY `rt2` (`id1`),
  CONSTRAINT `rt2` FOREIGN KEY (`id1`) REFERENCES `t1` (`id1`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

-- ----------------------------
-- Table structure for t3
-- ----------------------------
CREATE TABLE `t3` (
  `id` int(11) NOT NULL default '0',
  `id1` int(11) default NULL,
  PRIMARY KEY  (`id`),
  KEY `er1` (`id1`),
  CONSTRAINT `er1` FOREIGN KEY (`id1`) REFERENCES `t1` (`id1`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

-- ----------------------------
-- Records
-- ----------------------------
这个是可以设置的,你可以参考下

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-12-17 15:29
hf8813264
Rank: 1
等 级:新手上路
帖 子:22
专家分:5
注 册:2009-6-2
得分:0 
回复 5楼 lampeter123
谢谢
2010-12-25 14:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-328857-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.447253 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved