国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > 数据库应用 > JDBC数据库编程

JDBC数据库编程

来源:程序员人生   发布时间:2014-12-18 08:41:18 阅读次数:4101次

***********************************************声明******************************************************

      原创作品,出自 “晓风残月xj” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj)。

      由于各种缘由,可能存在诸多不足,欢迎斧正!

*********************************************************************************************************

      最近在自学MySQL数据库,同时将来职场上的开发语言为Java,所以就尝试在eclipse环境下写个小的事务处理的数据库程序。在这里谈谈Java MySQL数据库利用程序的开发。首先应当在本地机器上安装MySQL数据库,具体安装进程见新手上路中提供的链接;然后最好安装辅助的可视化工具:HeidiSQL,具体进程见HeidiSQL文中提供的链接。然互就是MySQL JDBC驱动的安装了,在这里提供1个链接:MySQL JDBC驱动 。

     依照上述的步骤,剩下的就是利用程序的编写,JDBC编程中相干流程是通用的,应当侧重看看,在此我谈谈我的理解。

      JDBC: Java database connection。JDBC是1组编程接口,数据库系统的底层开发者实现接口,Java开发者调用JDBC提供的接口进行与数据库的创建、链接、更新等操作。JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC驱动和JDBC-ODBC桥驱动实现与数据库的连接。
1)、加载数据库驱动程序;

Class.forName(driver)//此处driver指驱动的路径

2)、建立数据库连接;

Connection con = DriverManager.getConnection(url, user, password);//以特定的用户访问指定的数据库

3)、操作数据库,履行SQL语句;

4)、断开数据库连接。


下面转1段介绍, 完全java开发中JDBC连接数据库代码和步骤,在此表示感谢:

1、加载JDBC驱动程序:   
    在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现。   
    例如:   

try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ System.out.println("找不到驱动程序类 ,加载驱动失败!"); e.printStackTrace() ; }
   成功加载后,会将Driver类的实例注册到DriverManager类中。   
2、提供JDBC连接的URL   
   连接URL定义了连接数据库时的协议、子协议、数据源标识。书写情势:协议:子协议:数据源标识;协议:在JDBC中总是以jdbc开始;子协议:是桥连接的驱动程序或是数据库管理系统名称;数据源标识:标记找到数据库来源的地址与连接端口。   
   例如:(MySql的连接URL)   

jdbc:mysql: //localhost:3306/test?useUnicode=true&characterEncoding=gbk ; useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为 gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
 3、创建数据库的连接   
    要连接数据库,需要向java.sql.DriverManager要求并取得Connection对象,该对象就代表1个数据库的连接。使用DriverManager的getConnectin(String url,String username,String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来取得。   
     例如:

//连接MySql数据库,用户名和密码都是root String url = "jdbc:mysql://localhost:3306/test" ; String username = "root" ; String password = "root" ; try{ Connection con = DriverManager.getConnection(url , username , password ) ; }catch(SQLException se){ System.out.println("数据库连接失败!"); se.printStackTrace() ; }
 4、创建1个Statement   
    要履行SQL语句,必须取得java.sql.Statement实例,Statement实例分为以下3种类型:   
      1)、履行静态SQL语句。通常通过Statement实例实现。   
      2)、履行动态SQL语句。通常通过PreparedStatement实例实现。   
      3)、履行数据库存储进程。通常通过CallableStatement实例实现。   
    具体的实现方式:     
 
Statement stmt = con.createStatement() ; PreparedStatement pstmt = con.prepareStatement(sql) ; CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
 5、履行SQL语句   
   Statement接口提供了3种履行SQL语句的方法:executeQuery 、executeUpdate和execute   
    1)、ResultSet executeQuery(String sqlString):履行查询数据库的SQL语句,返回1个结果集(ResultSet)对象。   
    2)、int executeUpdate(String sqlString):用于履行INSERT、UPDATE或DELETE语句和SQL DDL语句,如:CREATE TABLE和DROP TABLE等   
    3)、execute(sqlString):用于履行返回多个结果集、多个更新计数或2者组合的语句。   
   具体实现的代码:   

ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; int rows = stmt.executeUpdate("INSERT INTO ...") ; boolean flag = stmt.execute(String sql) ;
 6、处理结果   
    两种情况:   
     1)、履行更新返回的是本次操作影响到的记录数。   
     2)、履行查询返回的结果是1个ResultSet对象。   
     ResultSet包括符合SQL语句中条件的所有行,并且它通过1套get方法提供了对这些行中数据的访问。使用结果集(ResultSet)对象的访问方法获得数据: 
  
while(rs.next()){ String name = rs.getString("name") ; String pass = rs.getString(1) ; // 此方法比较高效 } (列是从左到右编号的,并且从列1开始)
 7、关闭JDBC对象    
     操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:   
     1)、关闭记录集   
     2)、关闭声明   
     3)、关闭连接对象-数据库 

if(rs != null){ // 关闭记录集 try{ rs.close() ; }catch(SQLException e){ e.printStackTrace() ; } } if(stmt != null){ // 关闭声明 try{ stmt.close() ; }catch(SQLException e){ e.printStackTrace() ; } } if(conn != null){ // 关闭连接对象 try{ conn.close() ; }catch(SQLException e){ e.printStackTrace() ; } }
   

      上面那段文字介绍的挺好的,还有我自己也是初学,就直接转载了,在此表示感谢!下面贴上我的1段入门级代码,要毕业了,马上要工作了,想多接触1点工作上可能用得到的JDBC数据库开发,有无时间写个很大的项目,所以就只是描写1下大致流程,见笑了!

import java.sql.*; public class JDBCDemo { public static void main(String[] args) { String user = "root"; String password = "199203211410xfcy"; String url = "jdbc:mysql://localhost:3306/studentdb";//建立数据库服务器的地址 String tableName = "student_information"; String driver = "com.mysql.jdbc.Driver"; String sqlSentence; Connection con = null;//连接对象 Statement stmt = null;//操作对象 ResultSet rs = null;//查询结果 try { Class.forName(driver);//加载数据库驱动程序Driver类 con = DriverManager.getConnection(url, user, password);//数据库连接,以特定的用户访问指定的数据库 stmt = con.createStatement(); sqlSentence = "insert into " + tableName + " values (9,'honey',21)"; stmt.executeUpdate(sqlSentence); sqlSentence = "select * from " + tableName; rs = stmt.executeQuery(sqlSentence); ResultSetMetaData rsmd = rs.getMetaData(); int j = 0; j = rsmd.getColumnCount(); for (int k = 0; k < j; k++) { System.out.print(rsmd.getColumnName(k + 1)); System.out.print(" "); } System.out.println(); while (rs.next()) { for (int i = 0; i < j; i++) { System.out.print(rs.getString(i + 1)); System.out.print(" "); } System.out.println(); } } catch (ClassNotFoundException e1) { System.out.println("数据库驱动不存在!"); System.out.println(e1.toString()); } catch (SQLException e2) { System.out.println("数据库存在异常!"); System.out.println(e2.toString()); } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (con != null) con.close(); } catch (SQLException e) { System.out.println(e.toString()); } } } }
    条件是要有1个studentdb的数据库,和1张属性1致的student_information表。


    由于时间有限,在写博文的进程中参考过1些文献,在此表示感谢;同时鉴于水平缘由,你难免有不足的地方,欢迎斧正!


                





生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生