JDBC连接数据库程序

  废话少说,看了尚学堂的视频以及某大神的博客,总结出以下.(本文以oracle数据库为例)

创建一个JDBC连接数据库的程序,需要着手做以下几件事情:

注意,这里边使用了java.sql.Statement; java.sql.connection;等包,为了方便这里直接使用了java.sql.*;

一.jdbc怎么识别不同数据库呢,例如oracle.mysql.等,

  找到相应数据库的jdbc的类库,不同的数据库针对jdbc做出了不同的类库.找到类库以后需要找到一个driver的驱动,这个驱动就是提供jdbc来连接数据库的,那么这个驱动在哪呢?

  

没错,类库就是一个jar包.项目bulid path引进jar包.

  

然后看到该jar包下面有一个专门做驱动的类OracleDriver.class.

在要编写的JDBC连接数据的java类中引入此类:

  

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

 

//会抛出没有找到该类的异常,注意添加异常处理

  或者使用

new oracle.jdbc.driver,OracleDriver();

 成功加载后,会将Driver类的实例注册到DriverManager类中。

二.连接数据库

向java.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接。
  

String url = "jdbc:oracle:thin:@192.168.104.210:1521/orcl";   //JDBC的连接的URL
String dbname = "shgbyp";
String dbpwd = "dreamsoft";
Connection conn = DriverManager.getConnection(url, dbname, dbpwd);

 

三.创建sql语句并执行sql语句

这里使用了java.sql.statement包;

首先创建一个statement语句

Statement stmt = conn.createStatement();

然后调用Statement对象,在Statement中有一个方法是用来执行sql语句的:

String sql ="select * from a01"
stmt.executeQuery(sql);

在这之后就又有问题了,只执行sql语句,那么我们也需要去的结果呀;

在来看操作手册中,关于executeQuery()方法有一个返回值类型:ResultSet(结果集类型)

ResultSet rs = stmt.executeQuery(sql);

现在好了,拿到了结果集,之后我们是不是需要循环遍历结果集从而拿到我们想要的结果呢?

同时把结果System.out.println();输出出来

while(rs.next()){
  //比如我们以string类型只拿腌a01表中的personcode
  String result = rs.getString("personcde"); 
System.out.println(result); }

这样的话,以上是不是就完善了呢?

千万记住,在每次新建资源后要记得释放资源,以及所有中的异常处理最好用try/catch来处理!

//遵守先建后关的资管规则
//记住代码的严谨性,判空,因为如果为空,代表之前没有新建资源,就不存在关闭资源这一说法!
if(rs != null){
  rs.close();
} if(stmt != null){   stmt.close();
}
if(conn != null){   conn.close();
}

 四.执行程序

  

以上就ok啦,再接再厉!

/***************************完美分隔符,继续完善******************************/

加一.ExecuteUpdate()执行增删改语句

上边的话只是执行了查询操作,并且遍历返回了查询结果,那么,如果我需要对数据进行增删改等无返回结果的操作呢?

这时候需要使用ExecuteUpdate()方法:

String update_sql = "update a01 set personcode = '123456' where a01name = '曾建杰'"
//可以看到这句话其实是没有返回结果的
//回忆下,executeQuery的返回类型是结果集(ResultSet),而在这里,ExecuteUpdate的返回结果是int类型,而在我的理解范围内,其实返回结果类型应该是boolean类型?
int update_res = conn.ExecuteUpdate(update_sql); 
//查看其是否执行 有两种办法,1是查看eclipse中的dataSource这个视图,二是查看数据库,看是否进行了操作.

加二.PreparedStatement()预编译语句

上边所写的sql语句都是赋的定值,那么如果我们换一种赋值方式呢?比如说

PreparedStatement pstmt = conn.prepareStatement("UPDATE A01 SET PERSONCODE = ? WHERE AO1name = ?");
pstmt.setString(1, "123456"); //序号,所要赋的值
pstmt.setString(2, "曾建杰");

SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

 

posted on 2017-06-05 16:41  宋兰君  阅读(304)  评论(0编辑  收藏  举报

导航