lomboz_eclipse (MyEclipse,JBuilder)
JDBC(Java Database Connectivity)
JDBC 简介
(c,c++,java...) ---- (API for Oracle) -->Oracle
(c,c++,java...) ---- (API for SQLServer) -->SQLServer
(c,c++,java...) ---- (API for Mysql) -->Mysql
(c,c++,java...) ---- (API for ...) -->Oracle
(c,c++,java...)--(ODBC,JDBC)-->(Oracle,SQLServer.Mysql...)
SQL语言回顾
select * from T where...
insert into T values(...)
create table T()
delect form T where...
update T set t1=..and t2=.. where t3=...
drop table T
JDBC基础编程(java.sql.*)
JDBC编程步骤
1.Load the Driver(装载并注册数据库的JDBC驱动程序,不同数据库的不同连接类库,将Oracle的JDBC类库导入到classpath中)
(1)载入JDBC驱动:Class.forName()|Class.forName().newInstance()|new DriverName()
(2)注册JDBC驱动: java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
实例化时自动向DriverManager注册,不需显示调用DriverManager.registerDriver方法
2.Connect to the DataBase
(1)DriverManager.getConnection()
要建立与数据库的连接,首先要创建指定数据库的URL。连接数据库的URL对象,利用DriverManager 的getConnection方法建立的。数据库URL对象与网络资源的统一资源定位类似,其构成格式如下:
jdbc:subProtocol:subName://hostname:port;DatabaseName=ⅹⅹⅹ
其中:
jdbc表示当前通过Java的数据库连接进行数据库访问;
subProtocol表示通过某种驱动程序支持的数据库连接机制;
subName表示在当前连接机制下的具体名称;
hostname表示主机名;
port表示相应的连接端口;
DatabaseName表示要连接的数据库的名称。
这里以与Oracle数据库的连接为例:
连接Oracle 8/8i/9i数据库(用thin模式) url = jdbc:oracle:thin:@hostip:1521:oracleSID;
注意:hostip指主机的ip地址,oracleSID指数据库的SID。如何查看 oracleSID
1.在oracle的安装目录下,如D:\oracle\product\10.2.0\db_1\dbs,看文件名如SPFILEORCL.ORA,那么就是orcl,也就是说文件名字是 "SPFILE******.ORA ",那种的 "**** "就是SID
2.D:\oracle\product\10.2.0\oradata\SID文件夹... 或D:\oracle\product\10.2.0\db_1\dbs\SPFILESID名称.ORA
3.select instance_name from v$instance
再者确定连接数据库的用户名与密码,即user和password 的值:user = “ⅹⅹⅹ “; password = “ⅹⅹⅹ“;
最后使用如下语句:
Connection con=(java.sql.)DriverManager.getConnection(url,user,password);
3.Execute the SQL(用连接创建语句对象)
(1)Connection.CreateStatement()
(2)Statement.executeQuery(select语句)//返回一组结果集,其像游标,指针指在第一条记录的上面
(3)Statement.executeUpdate(insert,update,delete语句)
String sql = "insert into dept2 values (" + deptno + ",'" + dname + "','"+loc+"')";//取值
System.out.println(sql);
4.Retrieve the result data
(1)循环取得结果while(rs.next())
5.Show the result data
(1)将数据库中的各种类型转换为Java中的类型(getXXX)方法
6.Close
(1)依次关闭ResultSet、Statement和Connection对象(XXX.close())
close the resultset/ close the statement / close the connection
for example:
import java.sql.*;
public class TestJDBC {
public static void main(String[] args){
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");//new 一个驱动类的实例
//new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection("jdbc:oracle:thin:@10.3.5.19:1521:XST", "scott", "tiger");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from dept");
while(rs.next()){
System.out.println(rs.getString("deptno"));
System.out.println(rs.getInt(1));
}
}catch(ClassNotFoundException e){
e.printStackTrace();//logforg记录错误
}catch(SQLException e){
e.printStackTrace();
}finally{
try {
if(rs!=null){
rs.close();
rs = null;
}
if(stmt!=null){
stmt.close();
stmt = null;
}
if(conn!=null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
JDBC编程高级
String sql = "insert into dept2 values (" + deptno + ",'" + dname + "','" + loc + "')";
prepareStatement 灵活指定SQL语句中的变量
pstmt = conn.preparedStatement("insert into dept2 values (?,?,?)");
pstmt.setInt(1, deptno);
pstmt.setString(2, dname);
pstmt.setString(3, loc);
pstat.executeUpdate();
CallableStatement 对存储过程进行调用
CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}");//调用过程p
cstmt.registerOutParameter(3, Types.INTEGER);//设置第三个参数为输出变量,类型为整型
cstmt.setInt(1, 3);//设置第一个变量的值为3
System.out.println(cstmt.getInt(3))//取出第三个变量的值并输出
Batch 批处理(Statement,PreparedStatement 都可以用 addBatch();executeBatch())
Transaction 运用事务处理
conn.setAutoCommit(false);
........
conn.commit();
conn.setAutoCommit(true);
catch(SQLException e){if(conn!=null){conn.rollback();conn.setAutoCommit(true);}}
可以前后移动结果集 Movable ResultSet
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
Rs.next()
Rs.islast()
Rs.isAfterLast()
Rs.absolute()
Rs.getRow() 返回值当前记录行 与Rs.last()可以确定一共有多少条记录
Updatable ResultSet(*)
DataSource and RowSet
1)DataSource (数据源,一般不再单机上实现)
DriverManage(拿到跟数据库的连接) 的替代;连接池的实现;分布式实现(DataSource的属性可以动态改变)
2)RowSet
新的ResultSet;从ResultSet继承;支持断开的结果集;支持JavaBean标准
example 2
import java.sql.*;
public class TestPrepared {
public static void main(String[] args) {
if(args.length!=3){
System.out.println("Parameter Error!Please try again");
System.exit(-1);
}
int deptno = 0;
try {
deptno = Integer.parseInt(args[0]);
} catch (NumberFormatException e1) {
System.out.println("Parameter Error!deptno shold be Number format");
System.exit(-1);
}
String dname = args[1];
String loc = args[2];
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@10.3.5.19:1521:orcl","scott","tiger");
//String sql = "insert into dept2 values (" + deptno + ",'" + dname + "','" + loc + "')";
pstmt = conn.prepareStatement("insert into dept2 values (?,?,?)");
pstmt.setInt(1, deptno);
pstmt.setString(2, dname);
pstmt.setString(3, loc);
pstmt.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
} finally{
try {
if(pstmt != null){
pstmt.close();
pstmt = null;
}
if(conn != null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
example 3
import java.sql.*;
public class TestTransaction {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@10.3.5.19:1521:orcl","scott","tiger");
conn.setAutoCommit(false);
stmt= conn.createStatement();
stmt.addBatch("insert into dept2 values(99,'salse','haiyang')");
stmt.addBatch("insert into dept2 values(99,'salse','haiyang')");
stmt.addBatch("insert into dept2 values(99,'salse','haiyang')");
stmt.executeBatch();
conn.commit();
conn.setAutoCommit(true);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
try {
if(conn!= null){
conn.rollback();
conn.setAutoCommit(true);
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
try {
if(stmt!=null){
stmt.close();
stmt = null;
}
if(conn!=null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
《.lomboz-R-3.3-200710290621.zip:Eclipse与Java开发的利器》 .lomboz-R-3.3-200710290621.zip 文件是一个古老的Eclipse插件版本,Lomboz,用于Java开发。Lomboz是Eclipse平台上的一个开源项目,专门针对Java...
Lomboz是Eclipse的一个J2EE的插件,它将很多Java应用服务器、J2EE组件和Web应用开发集成到Eclipse中,可以帮助Java开发者使用Eclipse建立、测试、部署J2EE应用。 一、Lomboz特点-支持JSP编写,包括:语法着色和语法...
《Eclipse_lomboz_jboss 开发指南》是一份详细阐述如何使用Eclipse集成开发环境(IDE)结合Lomboz插件以及JBoss应用服务器来构建和部署J2EE应用程序的文档。本指南将深入探讨如何配置Eclipse,安装Lomboz插件,设置...
总结来说,"lomboz-emf-gef-jem-3.1RC2.zip" 是一个针对Java Web开发者的强大工具集,它整合了Eclipse的多个扩展,如Lomboz用于Web开发,EMF和GEF用于模型驱动和图形化编辑,JEM则助力Java EE应用的建模。...
### Eclipse Lomboz JSP Java Web 插件的安装与配置详解 #### 一、引言 随着Java Web技术的发展,Eclipse作为一个强大的开源IDE(集成开发环境),深受开发者喜爱。然而,Eclipse本身并未集成所有Java Web开发所需...
org.objectweb.lomboz-R-3.2-200610201336
Eclipse的Lomboz插件,本人的Eclipse平台:eclipse-jee-galileo-SR1-win32+org.objectweb.lomboz-R-3.3-200710290621+struts-2.1.8.1-all+tomcatPluginV321+ org.eclipse.babel.nls_eclipse_zh_3.5.0.v...
Lomboz是Eclipse的一个早期扩展,它提供了对J2EE应用开发的支持,包括JSP、Servlet和EJB等。"org.objectweb.lomboz _3.1.0.zip"这个压缩包可能是Lomboz 3.1.0版本的源码或者插件集合。 Eclipse JSP支持主要包括以下...
- 对于 `lomboz-wtp-emf-gef-jem-3.1.2` 插件也执行相同的步骤。 #### Tomcat 配置 1. **安装 Tomcat 5.0.28**: 解压 Tomcat 到指定位置,例如 `C:\Tomcat 5.0`。 2. **启动与测试**: - 使用命令行进入到 Tomcat ...
【Lomboz-Eclipse+TOMCAT插件教程】 在软件开发领域,Eclipse是一款广泛使用的集成开发环境(IDE),而Tomcat则是一款流行的开源Java Servlet容器,常用于部署和运行Java Web应用。Lomboz是Eclipse的一个早期插件,...
Eclipse的汉化包,可以用于Eclipse3.5.1,本人的Eclipse平台:eclipse-jee-galileo-SR1-win32+org.objectweb.lomboz-R-3.3-200710290621+struts-2.1.8.1-all+tomcatPluginV321+ org.eclipse.babel.nls_eclipse_zh_...
7. **Eclipse插件形式**:Lomboz以Eclipse插件的形式存在,这意味着它能够无缝地融入到Eclipse开发环境中,充分利用Eclipse的其他强大功能。 尽管Lomboz HibernateIDE在当时是一个非常有用的工具,但随着技术的发展...
5. **Lomboz Plugin**: lomboz-wtp-emf-gef-jem-3.1.2.zip 及 org.objectweb.lomboz_3.1.0.N20050106.zip 6. **Tomcat Plugin for Eclipse**: tomcatPluginV31.zip #### 二、插件下载与安装 **1. Lomboz Plugin ...
在本文中,我们将深入探讨如何使用Eclipse IDE进行J2EE应用程序的开发,结合Lomboz插件和JBoss应用服务器。Eclipse是一款强大的开源集成开发环境,特别适合Java开发者,而Lomboz是Eclipse的一个扩展,为J2EE项目提供...
- **文件名**: lomboz-wtp-emf-gef-jem-eclipse-SDK-3.1.2-win32.zip - **操作步骤**: 下载完成后,解压该ZIP包即可直接运行Lomboz。 **2.2.2 EMF包和Lomboz插件** - **下载地址**: ...
从"org.objectweb.lomboz-V3.3-200710290621"这个压缩包文件的名称来看,我们可以推测这包含了Lomboz的完整源码,这对于开发者来说是一份宝贵的资源。通过研究源码,不仅可以深入理解Lomboz的设计思想,还可以定制化...
- **EMF 插件和 Lomboz 插件**: 将解压后的 `feature` 和 `plugins` 目录拷贝至 `D:\eclipse`。 #### 三、Eclipse 配置 1. **Installed JREs 配置:** - 打开 Eclipse 配置界面: `Window -> Preferences`。 - ...