`
cyw
  • 浏览: 33148 次
  • 来自: 广州
社区版块
存档分类
最新评论

MySQL-JDBC

 
阅读更多

MySQL-JDBC

   JDBC是一种java数据库连接Api接口。JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果

   接下来便是开发步骤:

 1、     创建项目

 2、     右键项目,添加mysql-connector-java-5.1.29-bin.jar包。可以从MySQL官网下载mysql-connector-java-5.1.29.zip,解压后直接获得。

 3、     创建数据库。现在已经假定各位已经创建好自己的数据库了。

 4、     进行编程。编程完成之后,右键运行即可。

 

下面探讨一下核心代码:

 1、     连接数据库

 

Connection conn = null;
		String dburl = "jdbc:mysql://localhost:3306/cyw";
		String username = "cyw";
		String password = "";
		String driver = "com.mysql.jdbc.Driver";
		
		//先动态加载驱动,然后进行实例化
		Class.forName(driver).newInstance();
		//链接数据库
		conn = DriverManager.getConnection(dburl, username, password);

 

  

 2、     连结对象创建成功后,即可通过连结对象创建 statement 对象,以执行 SQL 语句。我们可将要执行的 SQL 语句分为两类,一类为需要返回结果表的 select 语句;一类为执行 insert update delete 操作的语句,因用程序只需要这类语句返回操作所生效的行数即可;对于这两种 SQL 操作, Statement 在执行时可采用不同的方法,如是 select 语句,则使用 executeQuery(sql)方法返回一个 ResultSet 对象,其中包含查询到的数据;如是另外三种,则使用 executeUpdate(sql)方法,返回一个 int 型值,代表语句所影响的行数。

 

关于查询方式,有三种,分别是statementprepareStatementCallableStatement。其中PrepareStatementStatement的子类、CallableStatementPrepareStatement的子类。

   Statement,又叫做拼装SQL语句。可以直接从conn链接对象获得,直接编译执行。

   PrepareStatement,又称预编译SQl语句。顾名思义,有一个预编译过程。数据库可以先将这些格式固定的SQL语句进行编译,存入数据库的缓存池里面。此时,并没与执行编译后的SQL语句,等到我们需要的时候,我们为?占位符赋值之后,就不用再次进行编译,而是直接运行。这是一种延迟加载的机制。能够有效的提高数据库的效率(毕竟只有在需要的时候才会进行运行,节省了资源),当然也克服了StatementSQL注入风险。

   CallableStatement是关于存储过程的,可下回分解。

 

//查询
     public  void query(String table, String colName, String temp) throws SQLException{
         String sql = "select * from "+table+" where "+colName+"=?";
        
         //一般使用预编译SQL语句,
         PreparedStatement ps = conn.prepareStatement(sql);
        
         //为每一个占位符?设置参数
         ps.setString(1, temp);
         ResultSet rs = ps.executeQuery();
        
         //进行显示
         while(rs.next()){
              int id = rs.getInt("id");
              System.out.println("id:"+id);
         }
}
 
//添加
     publicvoid add(String table) throws SQLException{
         String sql = null;
         if("datatable".equals(table)){
              sql = "insert into "+table+"(AT_id,type_id,data) values (?,?,?)";
         }
        
         PreparedStatement ps = conn.prepareStatement(sql);
         ps.setInt(1, 11);
         ps.setInt(2, 2);
         ps.setInt(3, 66);
 
         int count = ps.executeUpdate();
         if(count>0){
              System.out.println("插入数据成功!影响的记录条数是"+count);
         }else{
              System.out.println("插入数据失败!");
         }
     }

 

 

 

其他的类似。

 3、       结果集提取



 

如以上例子。

 4、      批处理

Statement提供了一个 addBatch(String sql)的方法将sql 加入批处理; PreparedStatement 对象的 addBatch()方法直接将预编译的 sql 加入批处理,最后可通过 executeBatch()方法一次性执行所有 sql。注意,这里 executeBatch()方法返回为一个 int[],数组的第 i 个元素的值代表加入批处理的第 i sql 所影响的行数。

     

//测试批量处理
     publicvoid bacthInsert(){
         try {
              String sql = "insert into datatable(AT_id,type_id,data) values(?,?,?)";
              PreparedStatement ps = conn.prepareStatement(sql);
              for(int i=0;i<10;i++){
                   ps.setInt(1, i);
                   ps.setInt(2, i);
                   ps.setInt(3, i);
                   ps.addBatch();
              }
              int[] result = ps.executeBatch();
              for(int i : result)
                   System.out.println(i);
         } catch (SQLException e) {
              System.out.println("批量处理失败");
              e.printStackTrace();
         }
}
 

 

 5、       事务

事务是指一个单元的工作,要么全部执行,要么就是全部不执行,非01.

Mysql可以通过手动提交进入事务机制。

详细以后再讲,以下是核心代码:

Conn.setAutoCommit();   //false,设置为手动提交,否则为自动提交

Conn.rollback()       //回滚到起始状态。    

关于事务级别:

Conn.setTransactionIsolation(事务级别常量);

Conn.getTransactionIsolation();

关于SavePoint接口(类似于存档点):

Java.sql.Savepoint txpoit = conn.setSavePoint(String SavePoint的名字);

Conn.rollback(txpoint);         //回滚到上一个SavePoint

Conn.releaseSavePoint(String SavePoint的名字);        //释放SavePoint

 6、       数据库连接池

为了减少运行过程中,数据库频繁创建、销毁连接,而消耗的资源,设立了数据库连接池,相当于一个数组或者集合类,存放了一些数据库连接。当需要时,便可以从连接池取得连接,不需要时便返回到连接池里面。

Connection 的建立较之线程更为费时,不但要建立底层的 TCP/IP 链路,还要通过复杂的数据库安全认证计算,这就有必要采用“连结池”技术。

网上有很多关于数据库连接池的开源实现,比如DBCPHibernateC3P0组件等等。

 7、    元数据查询

元数据,可以理解为数据的数据,如数据库版本号、表的列数,列名,某列数据类型等, JDBC 中可以得到两种元数据类型,一种是通过 Connection 对象的 getMetaData()方法得到 DatabaseMetaData对象用来取得数据库的相关信息;另一种是通过 ResultSet 对象的 getMetaData()方法得得结果集的元数据 ResultSetMetaData 对象用来取得结果集,如列个数等相关信息。

核心代码:

//取得数据库的元数据对象
DatabaseMetaData dmd=conn.getMetaData();
String dbName=dmd.getDatabaseProductName();
String dbVersion= dmd.getDatabaseProductVersion();

 

//得到结果集的元数据对象
ResultSetMetaData rmd=rs.getMetaData();
//结果集有几列
int columCount=rmd.getColumnCount();
//打印出每一列的标题
for(int i=1;i<=columCount;i++){
System.
out.print(rmd.getColumnName(i)+"\t");
}

 

 



 

  • 大小: 41.7 KB
  • 大小: 54.7 KB
分享到:
评论

相关推荐

    hibernate+junit+mysql-jdbc开发核心jar包三合一

    本资源“hibernate+junit+mysql-jdbc开发核心jar包三合一”显然是为了支持SSH框架中的Hibernate部分,并结合JUnit进行测试以及MySQL数据库连接。现在我们将详细探讨这三个组件及其在Java开发中的应用。 **Hibernate...

    mysql-jdbc

    MySQL-JDBC是Java开发者在应用程序中与MySQL数据库交互的标准方式。JDBC(Java Database Connectivity)是Java平台中用于规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。本...

    mysql-jdbc.jar

    mysql 连接驱动。eg:You need to download the JDBC Driver of your database to the Kylin server. The JDBC driver jar should be added to $KYLIN_HOME/ext and $SQOOP_HOME/lib folder.

    MySQL-JDBC驱动包

    MySQL-JDBC驱动包是Java应用程序连接MySQL数据库的关键组件。它实现了Java Database Connectivity (JDBC) API,使得Java开发者能够通过标准的Java代码与MySQL数据库进行交互。在本压缩包中,包含了两个不同版本的...

    MySQL5.5服务端+MySQL-Front客户端+MySQL-JDBC驱动.zip

    MySQL5.5服务端+MySQL-Front客户端+MySQL-JDBC驱动.zip MySQL5.5服务端+MySQL-Front客户端+MySQL-JDBC驱动.zip MySQL5.5服务端+MySQL-Front客户端+MySQL-JDBC驱动.zip

    MySQL-JDBCjar包

    MySQL-JDBC jar包是Java应用程序连接到MySQL数据库的关键组件,它是Java Database Connectivity (JDBC) 驱动程序的一部分。JDBC驱动程序允许Java代码与各种数据库进行交互,包括MySQL。在本例中,我们讨论的是MySQL ...

    mysql-jdbc-5.1-6.0jar包综合

    在给定的压缩包文件"mysql-jdbc-5.1-6.0jar包综合"中,包含了多个不同版本的MySQL JDBC驱动,包括5.1系列的5.1.5、5.1.8、5.1.10、5.1.18、5.1.34和5.1.38,以及5.6版本和6.0.3版本。这些不同版本的驱动适用于不同的...

    mysql-jdbc_jb51.rar

    MySQL-JDBC驱动包是Java开发者在使用MySQL数据库时不可或缺的一部分,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与MySQL数据库进行通信。"mysql-jdbc_jb51.rar"这个压缩包包含了必要的组件,...

    mysql-JDBC驱动.zip

    MySQL-JDBC驱动,也称为Connector/J,是MySQL官方提供的Java驱动程序,使得Java应用程序能够通过JDBC接口与MySQL数据库进行连接、查询和操作数据。它遵循JDBC规范,提供了多种类型的驱动,包括Type 1、Type 2、Type ...

    sqlserver2005-jdbc驱动、sqlserver2008-jdbc驱动、mysql-jdbc驱动、oracle驱动-

    本压缩包包含了适用于不同数据库系统的JDBC驱动,包括sqlserver2005-jdbc驱动、sqlserver2008-jdbc驱动、mysql-jdbc驱动以及oracle驱动,这使得开发者能够方便地与这些数据库进行通信。 1. SQL Server JDBC驱动: ...

    java-mysql-jdbc

    Java MySQL JDBC是Java编程语言与MySQL数据库之间交互的重要桥梁,它允许Java应用程序通过Java Database Connectivity (JDBC) API连接并操作MySQL数据库。JDBC是一种Java API,由Sun Microsystems(现为Oracle公司)...

    Mysql-JDBC驱动架包

    MySQL-JDBC驱动架包是Java开发者用来与MySQL数据库进行交互的重要工具。JDBC(Java Database Connectivity)是Java语言中用于规范客户端程序如何访问数据库的应用编程接口,它为开发者提供了标准的API,使得开发者...

    jdbc大全(ojdbc-1.4.jar,mysql-jdbc-java-5.1.7.rar,sql2k-jdbc.rar

    这个“jdbc大全”包含了三个重要的JDBC驱动包:ojdbc-1.4.jar(Oracle JDBC驱动),mysql-jdbc-java-5.1.7.rar(MySQL JDBC驱动),以及sql2k-jdbc.rar(SQL Server 2000 JDBC驱动)。 **1. Oracle JDBC驱动 (ojdbc...

    mysql-jdbc.jar:mysql的jdbc驱动

    MySQL JDBC驱动,全称为MySQL Java Database Connectivity Driver,是Java开发者用来连接MySQL数据库的重要工具。它遵循Java Database Connectivity (JDBC) API规范,使得Java应用程序能够与MySQL数据库进行交互,...

    mysql-jdbc.zip

    "mysql-jdbc.zip"这个压缩包就是提供了MySQL的Java JDBC驱动程序,使得Java应用程序能够连接并操作MySQL数据库。 在这个压缩包里有两个版本的驱动文件:"mysql-connector-java-8.0.13.jar"和"mysql-connector-java-...

    Mysql-jdbc驱动包

    MySQL-JDBC驱动包是Java应用程序连接到MySQL数据库的关键组件,它是Java Database Connectivity (JDBC) API的一部分,允许Java开发者在Java程序中执行SQL语句,从而实现对MySQL数据库的读写操作。MySQL-Connector/J...

    mysql-jdbc6下载

    mysql-jdbc6下载

Global site tag (gtag.js) - Google Analytics