`

JDBC连接MySQL

    博客分类:
  • Java
 
阅读更多

前期准备工作,安好JDK,MyEclipse。

下载JDBC驱动mysql-connector-java-5.0.5-bin.jar导入到工程中去

1、工程(右键)--buildpath--configure build path--add external jars。

2、 也可以加到classpath中去,具体如下:“我的电脑”-> “属性” ->“高级” -> “环境变量”,在系统变量那里编辑classpath,将D:\mysql-connector-java-5.0.5\mysql- connector-java-5.0.5-bin.jar加到最后,在加这个字符串前要加“;”,以与前一个classpath区分开,然后确定。

测试代码:所用驱动 mysql-connector-java-5.0-nightly-20071116-bin.jar

程序中引用必要的包:import java.sql.*;  //它包含有操作数据库的各个类与接口

1、加载合适的JDBC驱动程序

Class.forName(Driver);

   MySQL驱动程序:com.mysql.jdbc.Driver

   Oracle驱动程序:oracle.jdbc.driver.OracleDriver

   SQLServer驱动程序:

   com.Microsoft.jdbc.sqlserver.SQLServerDriver

2、建立数据库连接

与MySQL数据库连接的方法:

Connection con=DriverManager.getConnection(“jdbc:mysql://主机IP或主机名:3306/数据库名”,用户名,密码);

java.sql.DriveManager  用来处理装载驱动程序并且为创建新的数据库连接提供支持;

–java.sql.Connection  用于完成对特定定数据库的连接;

–java.sql.Statement  用于对特定的数据库执行SQL语句;java.sql.Statement又包含了以下两个重要的子类型:

       java.sql.PreparedStatement  用于执行预编译的SQL语句;

       java.sql.CallableStatement  用于执行数据库中存储的过程的调用;

--java.sql.ResultSet  用于保存查询所得的结果集

3、创建Statement对象

Statement  st=con.createStatement();  //最后可以不关闭,但推荐关闭

利用Statement对象可以执行静态SQL语句,静态SQL语句可以是Select语句、Delete语句、Update语句和Insert语句。

执行SQL语句

Statement接口提供了三种执行SQL语句的方法:executeQuery()、executeUpdate() 和execute()。具体使用哪一个方法由SQL语句本身来决定。

方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句等。

方法 executeUpdate 用于执行INSERT、UPDATE或DELETE 语句以及SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个 整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。一般不会需要该高级功能。

      ①JDBC在编译时并不对将要执行的SQL查询语句作任何检查,只是将其作为一个String类对象,直到驱动程序执行SQL查询语句时才知道其是否正确。对于错误的SQL查询语句,在执行时将会产生 SQLException。

      ②一个Statement对象在同一时间只能打开一个结果集,对第二个结果集的打开隐含着对第一个结果集的关闭。

      ③如果想对多个结果集同时操作,必须创建出多个Statement对象,在每个Statement对象上执行SQL查询语句以获得相应的结果集。

      ④如果不需要同时处理多个结果集,则可以在一个Statement对象上顺序执行多个SQL查询语句,对获得的结果集进行顺序操作。

str="insertinto customer values('wangyang',24,'beijing','wangyang@sina.com')";

int  recordNumber=st.executeUpdate(str);执行executeUpdate()方法返回该SQL语句涉及的记录数。

str="select* from mycustomer";   //查询表中记录

ResultSet rs=st.executeQuery(str); 由于SQL语句是select,用executeQuery()方法,返回一个结果集保存在ResultSet对象rs中。

4、分析ResultSet对象

① 执行完毕SQL语句后,将返回一个ResultSet类的对象,它包含所有的查询结果。但对ResultSet类的对象方式依赖于光标(Cursor)的 类型,而对每一行中的各个列,可以按任何顺序进行处理(当然,如果按从左到右的顺序对各列进行处理可以获得较高的执行效率);

ResultSet类中的Course方式主要有:

ResultSet.TYPE_FORWARD_ONLY(为缺省设置):光标只能前进不能后退,也就是只能从第一个一直移动到最后一个。

ResultSet.TYPE_SCROLL_SENSITIVE:允许光标前进或后退并感应到其它ResultSet的光标的移动情形。

ResultSet.TYPE_SCROLL_INSENSITIVE:允许光标前进或后退并不能感应到其它ResultSet的光标的移动情形。

ResultSet类中的数据是否允许修改主要有:

ResultSet.CONCUR_READ_ONLY(为缺省设置):表示数据只能只读,不能更改。

ResultSet.CONCUR_UPDATABLE:表示数据允许被修改。

可以在创建Statement或PreparedStatement对象时指定ResultSet的这两个特性。

Statement stmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

PreparedStatement pstmt=con.PrepareStatement("insert into bookTable values (?,?,?)",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

② ResultSet类的对象维持一个指向当前行的指针,利用ResultSet类的next()方法可以移动到下一行(在JDBC中,Java程序一次只 能看到一行数据),如果next()的返回值为false,则说明已到记录集的尾部。另外JDBC也没有类似ODBC 的书签功能的方法。

③ 利用ResultSet类的getXXX()方法可以获得某一列的结果,其中XXX代表JDBC中的Java数据类型,如 getInt()、getString()、getDate()等。访问时需要指定要检索的列(可以采用 int值作为列号(从1开始计数)或指定列(字段)名方式,但字段名不区别字母的大小写)。

示例:

while(rs.next()){

int id=rs.getInt("id");

String name=rs.getString("cName");

int age=rs.getInt("cAge");

String address=rs.getString("cAddress");

String email=rs.getString("cEmail");

System.out.println(id+" "+name+" "+age+" "+address+" "+email);

}

获得结果集中的结构信息:利用ResultSet类的getMetaData()方法来获得结果集中的一些结构信息(主要提供用来描述列的数量、列的名称、列的数据类型。利用ResulSetMetaData类中的方法)。

ResultsetMetaData  rsmd=rs.getMetaData();

rsmd.getColumnCount();   //返回结果集中的列数

rsmd.getColumnLabel(1); //返回第一列的列名(字段名)

例如:

Statement stmt=con.createStatement();

ResultSet rs=stmt.executeQuery("select * from TableName");

for(int i=1; i<=rs.getMetaData().getColumnCount(); i++) //跟踪显示各个列的名称

{ System.out.print(rs. getColumnName (i)+"\t");

}

while(rs.next())

{ //跟踪显示各个列的值

for(int j=1; j<=rs.getMetaData().getColumnCount(); j++)

{ System.out.print(rs.getObject(j)+"\t");

}

}

5、关闭连接

(注意关闭的顺序) 例:

rs.close();

st.close();

con.close()

6JDBC的常用API

一、Connection接口:

       1.createStatement():创建数据库连接

       2.prepareStatement(Stringsql):创建预处理语句

       3.prepareCall(Stringsql):创建可调用语句

       4.getAutoCommit():获取自动提交的模式

       5.setAutoCommit():设置自动提交的模式

       6.commit():提交所执行的SQL语句

       7.rollback():回滚所执行的SQL语句

       8.getMetaData():获取一个DatabaseMetaData对象,该对象包含了有关数据库的基本信息

       9.close():关闭数据库连接

      10.isClose():判断数据库连接是否超时或被显示关闭

二、Statement接口:

       1.execute(Stringsql):执行SQL语句,如果返回值是结果集则为true,否则为false

       2.executeQuery(Stringsql):执行SQL语句,返回值为ResultSet

       3.executeUpdate(Stringsql):执行SQL语句,返回值为所影响的行数

       4.addBatch(Stringsql):向当前Statement对象的命令列表中添加新的批处理SQL语句

       5.clearBatch():清空当前Statement对象的命令列表

       6.executeBatch():执行当前Statement对象的批处理语句,返回值为每个语句所影响的函数数组

       7.getConnection():返回创建了该Statement对象的Connection对象

       8.getQueryTimeout():获取等待处理结果的时间

       9.setQueryTimeout():设置等待处理结果的时间

三、ResultSet接口:

       1.first()/beforeFirst():将游标移动到ResultSet中第一条记录(的前面)

       2.last()/afterLast():将游标移动到ResultSet中最后一条记录(的后面)

       3.absolute(intcolumn):将游标移动到相对于第一行的指定行,负数则为相对于最后一条记录

       4.relative(introws):将游标移动到相对于当前行的第几行,正为向下,负为向上

       5.next():将游标下移一行

       6.previous():将游标上移一行

       7.insertRow():向当前ResultSet和数据库中被插入行处插入一条记录

       8.deleteRow():将当前ResultSet中的当前行和数据库中对应的记录删除

       9.updateRow():用当前ResultSet中已更新的记录更新数据库中对应的记录

       10.cancelUpdate():取消当前对ResultSet和数据库中所做的操作

       11.findColumn(StringcolumnName):返回当前ResultSet中与指定列名对应的索引

       12.getRow():返回ResultSet中的当前行号

       13.refreshRow():更新当前ResultSet中的所有记录

       14.getMetaData():返回描述ResultSet的ResultSetMetaData对象

       15.isAfterLast():是否到了结尾

       16.isBeforeFirst(): 是否到了开头

       17.isFirst():是否第一条记录

       18.isLast(): 是否最后一条记录

       19.wasNull():检查列值是否为NULL值,如果列的类型为基本类型,且数据库中的值为0,那么

这项检查就很重要。由于数据库NULL也返回0,所以0值和数据库的NULL不能区分。如果列的类型为对象,可以简单地将返回值与null比较

        20.close():关闭当前ResultSet

四、ResultSetMetaData接口:

       1.getColumnCount():返回ResultSet中列的数目

       2.getColumnName():返回列在数据库中的名称

       3.getColumnType():返回列的SQL类型

       4.isReadOnly():表示该数据项是否为只读值

       5.isNullable():表示该列是否可以存储NULL

实例:

package com.chenjo;

import java.sql.*;

public class JDBCTest {

public static void main(String[] args){

           // 驱动程序名
           String driver = "com.mysql.jdbc.Driver";

           // URL指向要访问的数据库名test
           String url = "jdbc:mysql://127.0.0.1:3306/db_database16";

           // MySQL配置时的用户名
           String user = "root";
 
           // MySQL配置时的密码
           String password = "root";

           try {
            // 加载驱动程序
            Class.forName(driver);

            // 连续数据库
            Connection conn = DriverManager.getConnection(url, user, password);

            if(!conn.isClosed())
             System.out.println("Succeeded connecting to the Database!");

            // statement用来执行SQL语句
            Statement statement = conn.createStatement();

            // 要执行的SQL语句
            String sql = "select * from tb_book";

            // 结果集
            ResultSet rs = statement.executeQuery(sql);

            System.out.println("-----------------");
           

            String name = null;

            while(rs.next()) {
   
             // 选择sname这列数据
             name = rs.getString("bookName");
   
             // 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
             // 然后使用GB2312字符集解码指定的字节数组
             //name = new String(name.getBytes("ISO-8859-1"),"GBK");
             //name = new String(name.getBytes("UTF-8"),"GB2312");

             // 输出结果
             System.out.println(rs.getString("ID") + "\t" + name);
            }

            rs.close();
            conn.close();

           } catch(ClassNotFoundException e) {


            System.out.println("Sorry,can`t find the Driver!");
            e.printStackTrace();


           } catch(SQLException e) {


            e.printStackTrace();


           } catch(Exception e) {


            e.printStackTrace();


           }
}
}

 

结果:  (db_database16 的字符集是 gbk)

Succeeded connecting to the Database!
-----------------
1 Java Web程序开范例宝典
2 Java范例完全自学手册
3 Java Web开发典型模块大全
4 JSP项目开发全程实录

分享到:
评论

相关推荐

    jdbc连接mysql工具类

    总之,`jdbc连接mysql工具类`主要涉及JDBC API的使用,包括数据库连接、预编译的SQL语句(PreparedStatement)、结果集处理以及资源管理。这个工具类可以极大地简化数据库操作,提高代码的可维护性和复用性。通过...

    Pb通过jdbc连接mysql的配置及程序发布

    根据提供的标题、描述以及部分文本内容,我们可以详细探讨如何配置 PowerBuilder(以下简称PB)通过 JDBC 连接 MySQL 数据库的方法,以及如何将程序打包并发布到其他计算机上。 ### 一、配置 PB 通过 JDBC 连接 ...

    JDBC连接Mysql数据库案例

    本案例将探讨如何使用JDBC连接MySQL数据库,并通过实际的代码示例讲解整个过程。我们将涉及以下知识点: 1. **JDBC驱动注册**: 在Java中,连接MySQL数据库首先需要加载并注册JDBC驱动。MySQL的JDBC驱动类是`...

    PB11.5 通过JDBC连接MySQL

    5. **PBDemo_JDBC**:这个文件可能是包含示例代码或教程的项目,用于演示如何在PB11.5中使用JDBC连接MySQL。打开并研究此文件,了解具体的实现细节和最佳实践。 6. **错误处理和资源管理**:在完成数据库操作后,...

    JDBC连接MySQL例子

    本示例是关于如何使用JDBC连接MySQL数据库的一个实践教程,涵盖了数据库连接、数据操作以及大文本和图片的存储。 首先,我们需要了解JDBC的基本流程,包括加载驱动、建立连接、创建Statement或PreparedStatement...

    一个JDBC连接mysql驱动

    本篇文章将深入探讨如何使用JDBC连接MySQL驱动,这对于JSP(JavaServer Pages)的初学者来说是非常重要的知识。 首先,我们需要了解JDBC的基本概念。JDBC驱动是Java程序连接到特定数据库的桥梁,对于MySQL,我们...

    java jdbc连接mySql的小例子

    通过这个小例子,我们可以学习到Java中使用JDBC连接MySQL的基本步骤。它展示了从建立连接到执行SQL,再到处理结果和关闭连接的完整流程。了解这些概念后,你就可以根据需要扩展代码,实现更复杂的数据库操作,如事务...

    JDBC连接Mysql数据库

    本教程将详细介绍如何使用JDBC连接MySQL数据库,实现数据的增、删、改、查操作,这对于初学者来说是一个重要的学习起点。 首先,确保你的系统中已经安装了MySQL数据库并创建了一个数据库实例。接下来,你需要获取...

    java jdbc连接mysql所需要的jar包

    以下是关于使用Java JDBC连接MySQL所需的知识点: 1. **JDBC驱动类型**: JDBC驱动主要有四种类型:Type 1、Type 2、Type 3和Type 4。对于MySQL,我们通常使用Type 4,即纯Java的网络驱动,因为它无需中间层,性能...

    jdbc 连接MySQL 例子

    jdbc连接mysql的例子,调试通过的 给初学者们节省时间

    jdbc连接mysql详细操作源代码带数据库脚本

    本文将详细讲解如何使用JDBC连接MySQL数据库,并提供相关的源代码示例,以及数据库脚本的使用。 首先,让我们了解JDBC的基本概念。JDBC是Java API,它为开发者提供了一种标准的接口,使得Java应用程序能够访问和...

    在Eclipse中用JDBC连接MySQL数据库!.txt

    ### 在Eclipse中使用JDBC连接MySQL数据库的关键步骤与注意事项 #### 一、准备工作与环境配置 1. **下载MySQL数据库:** - 版本选择:MySQL 6.0。 - 下载地址:[http://dev.mysql.com/downloads/mysql/6.0.html]...

    java 使用jdbc 连接mysql 实现增删改查

    java 使用jdbc 连接mysql 实现增删改查java 使用jdbc 连接mysql 实现增删改查java 使用jdbc 连接mysql 实现增删改查java 使用jdbc 连接mysql 实现增删改查java 使用jdbc 连接mysql 实现增删改查

    jdbc连接mysql数据库,实现增删改查

    本教程将深入探讨如何使用JDBC连接MySQL数据库并实现增、删、改、查(CRUD)操作。首先,我们需要确保已经安装了MySQL数据库,并且在系统中配置了相应的驱动。 1. **引入MySQL JDBC驱动** 要使用JDBC与MySQL通信,...

    PB通过JDBC连MYSQL教程

    以上就是使用PB通过JDBC连接MySQL的基本过程。通过熟练掌握这些步骤,你可以构建出与MySQL数据库交互的高效应用程序。记得在实际开发中,要根据项目需求调整连接参数,如SSL设置、字符集等,确保数据的安全性和兼容...

    JDBC连接MySQL 实例

    **JDBC连接MySQL实例详解** Java Database Connectivity (JDBC) 是Java编程语言中用于与数据库交互的一种接口标准,由Sun Microsystems公司(现为Oracle公司)开发。它为Java程序员提供了标准化的方法来创建、执行...

    \纯JDBC连接MySQl数据库.doc

    在Java编程中,纯JDBC(Java Database Connectivity)连接MySQL数据库是一种基础且直接的方式,用于实现Java应用程序与MySQL数据库之间的交互。下面将详细解析标题和描述中涉及的知识点,并扩展相关的内容。 1. **...

    JDBC连接MySQL数据库关键的四个步骤

    ### JDBC连接MySQL数据库关键的四个步骤 在现代软件开发中,Java作为一种广泛使用的编程语言,其与数据库的交互是必不可少的一部分。JDBC(Java Database Connectivity)作为Java平台上的标准数据库访问接口,允许...

    自己写的一个使用jdbc连接mysql的源代码

    本项目是一个使用JDBC连接MySQL数据库的简单示例,虽然目前只包含了基本的连接功能,但已经能够展示出如何通过Java代码与MySQL数据库进行交互。 首先,我们需要理解JDBC的核心概念。JDBC提供了一组接口和类,使得...

Global site tag (gtag.js) - Google Analytics