图模.数据库连接测试.简单操作

1、感受:

 1、Oracle和MySQL放在一起操作时,才发现,两者基本使用的类都是一样的,只是加载的驱动不同(“Class.forName(???);”)。一定是定了某种协议之类的...

 2、具体 Class.forName(???); 的参数,到底填什么驱动名呢?一般都是 ???Driver之类的。可以用以下的方式来确定:

  (1)网上搜索,此种数据库 使用的驱动类名是什么。一定是都是 包名.类名的形式,如 aaa.bbb.ccc.ddd

  (2)查看自己的 jar,看里面的层次结构 是否是这样,若不是 则做出相应调整。查看 jar里面的层次结构及内容,我一般有两种方式:

    (A) WinRAR,这个方式就是比较麻烦,要自己一层一层的进文件夹去查看

    (B) 放到Eclipse的某个项目中,"Add to Build Path"之后 可以很直观的通过树形结构的方式来查看 里面的层级结构

 

2、

3、代码:分为 Oracle10g 和 MySQL8.0.15的,两个数据库的 数据库名相同,测试的表的表明也相同 表的字段也相同

  3.1、Oracle10g 简单测试代码:(虽然类名是"Toracle10204",但实际测试时 Oracle还是10.2.0.1 还没升级,用的也是 10.2.0.4的"ojdbc14.jar")

package util.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import util.date.TdateUtils;

public class Toracle10204
{
    // java连接Oracle数据库 - 菜鸟麻花 - 博客园.html ( https://www.cnblogs.com/cainiaomahua/p/6183339.html )
    public static void main(String[] args)
    {
//        Toracle10204 ora = new Toracle10204();
//        ora.AddData("zzzccc", "13712341234");

        try
        {
            while (true)
            {
                System.out.println( TdateUtils.DatetimeZ(false, false, true) );
                
                Class.forName(DRVIER);
                Connection conn = DriverManager.getConnection(URL, USERNAMR, PASSWORD);
    
                String sqlSelect = "select count(id1) from zctest01 where 1 = 1";
                
                PreparedStatement pstm = conn.prepareStatement(sqlSelect);
                ResultSet rs = pstm.executeQuery();
                while (rs.next())
                    System.out.println(rs.getInt(1));
                
                Thread.sleep(1000 * 10);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    // 定义连接所需的字符串
    // 192.168.0.X是本机地址(要改成自己的IP地址),1521端口号,XE是精简版Oracle的默认数据库名
    private static String USERNAMR = "zzc";
    private static String PASSWORD = "dongruisoft.com";
    //private static String DRVIER = "oracle.jdbc.OracleDriver";
    private static String DRVIER = "oracle.jdbc.driver.OracleDriver";
    private static String URL = "jdbc:oracle:thin:@192.168.1.187:1521:zzorcl";

    // 创建一个数据库连接
    Connection connection = null;
    // 创建预编译语句对象,一般都是用这个而不用Statement
    PreparedStatement pstm = null;
    // 创建一个结果集对象
    ResultSet rs = null;
    
    /**
     * 获取Connection对象
     * 
     * @return
     */
    public Connection getConnection()
    {
        try {
            Class.forName(DRVIER);
            connection = DriverManager.getConnection(URL, USERNAMR, PASSWORD);
            System.out.println("成功连接数据库");
        } catch (Exception e) {
            e.printStackTrace();
        }

        return connection;
    }

    /**
     * 释放资源
     */
    public void ReleaseResource()
    {
        if (rs != null) {
            try {
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (pstm != null) {
            try {
                pstm.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

  // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    
    /**
     * 向数据库中增加数据
     * 首先获取表内数据总数,总数+1为新增数据的id值
     * @param stuName:学生姓名
     * @param gender:学生性别,1表示男性,2表示女性
     * @param age:学生年龄
     * @param address:学生住址
     */
    public void AddData(String _name, String _tel)
    {
        connection = getConnection();
        // String sql =
        // "insert into student values('1','王小军','1','17','北京市和平里七区30号楼7门102')";
        String sqlSelect = "select count(id1) from zctest01 where 1 = 1";
        String sqlInsert = "insert into zctest01 values(?,?,?)";
        
        int iCnt = 0;
        int iIdx = 0;
        try
        {
            // 计算数据库zctest01表中数据总数
            pstm = connection.prepareStatement(sqlSelect);
            rs = pstm.executeQuery();
            while (rs.next()) {
                iCnt = rs.getInt(1);
                System.out.println(rs.getInt(1));
            }
            iIdx = iCnt + 1;
            
            // 执行插入数据操作
            pstm = connection.prepareStatement(sqlInsert);
            pstm.setInt(1, iIdx);
            pstm.setString(2, _name+(""+iIdx));
            pstm.setString(3, _tel);
            pstm.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ReleaseResource();
        }
    }
    
    /**
     * 向数据库中查询数据
     */
    public void SelectData()
    {
        connection = getConnection();
        String sql = "select * from zctest01 where 1 = 1";
        try {
            pstm = connection.prepareStatement(sql);
            rs = pstm.executeQuery();
            while (rs.next()) {
                String id = rs.getString("id1");
                String name = rs.getString("name");
                String tel = rs.getString("tel");
//                System.out.println(id + "\t" + name + "\t" + gender + "\t"
//                        + age + "\t" + address);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ReleaseResource();
        }
    }
    
}

 

  3.2、MySQL8.0.15 简单测试代码:(使用的是mysql-connector-java-8.0.15.jar)

package util.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class Tmysql8015
{
    // Java连接MySQL数据库——含步骤和代码 - 风雪夜归人shen - 博客园.html ( https://www.cnblogs.com/centor/p/6142775.html )
    
    public static void main(String[] args)
    {
//        main_Insert();
        main_Query();
    }
    
    public static void main_Insert()
    {
        //驱动程序名
        //String driver = "com.mysql.jdbc.Driver";
        String driver = "com.mysql.cj.jdbc.Driver";
        //URL指向要访问的数据库名mydata
        String url = "jdbc:mysql://192.168.1.110:3335/zzorcl?serverTimezone=GMT%2B8";
        // jdbc:mysql://localhost:3306/exam?characterEncoding=utf8&serverTimezone=UTC
        // jdbc:mysql://localhost:3306/exam?characterEncoding=utf8&serverTimezone=UTC // 在xml的配置文件中 ;要用 & 代替。
// ZC: 像上面那样,为何要带参数serverTimezone? ∵ 使用高版本的 mysql-connector-java-8.0.15.jar的时候,程序会报错: // ZC:  “ERROR: The server time zone value '???' is unrecognized or represents more than one time zone” //MySQL配置时的用户名 String user = "root"; //MySQL配置时的密码 String password = "dongruisoft.com"; Connection conn = null; PreparedStatement pstm = null; ResultSet rs = null; try { Class.forName(driver); conn = DriverManager.getConnection(url,user,password); if(!conn.isClosed()) System.out.println("Succeeded connecting to the Database!"); String sqlSelect = "select count(id1) from zctest01 where 1 = 1"; String sqlInsert = "insert into zctest01 values(?,?,?)"; int iCnt = 0; int iIdx = 0; // 计算数据库zctest01表中数据总数 pstm = conn.prepareStatement(sqlSelect); rs = pstm.executeQuery(); while (rs.next()) { iCnt = rs.getInt(1); System.out.println(rs.getInt(1)); } iIdx = iCnt + 1; pstm.close(); // 执行插入数据操作 pstm = conn.prepareStatement(sqlInsert); pstm.setInt(1, iIdx); pstm.setString(2, "name"+iIdx); pstm.setString(3, "tel"+iIdx); pstm.executeUpdate(); } catch(Exception e) { e.printStackTrace(); }finally{ try { if (rs != null) rs.close(); if (pstm != null) pstm.close(); if (conn != null) conn.close(); } catch(Exception e) { e.printStackTrace(); } } } public static void main_Query() { //声明Connection对象 Connection con; //驱动程序名 String driver = "com.mysql.cj.jdbc.Driver"; //URL指向要访问的数据库名mydata String url = "jdbc:mysql://192.168.1.110:3335/zzorcl?serverTimezone=GMT%2B8"; //MySQL配置时的用户名 String user = "root"; //MySQL配置时的密码 String password = "dongruisoft.com"; //遍历查询结果集 try { //加载驱动程序 Class.forName(driver); //1.getConnection()方法,连接MySQL数据库!! con = DriverManager.getConnection(url,user,password); if(!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); //2.创建statement类对象,用来执行SQL语句!! Statement statement = con.createStatement(); //要执行的SQL语句 String sql = "select * from zctest01"; //3.ResultSet类,用来存放获取的结果集!! ResultSet rs = statement.executeQuery(sql); while(rs.next()) { String id1 = rs.getString("id1"); String name = rs.getString("name"); String tel = rs.getString("tel"); //输出结果 System.out.println(id1 + "\t" + name + "\t" + tel); } rs.close(); con.close(); } catch(Exception e) { //数据库连接失败异常处理 e.printStackTrace(); }finally{ System.out.println("数据库数据成功获取!!"); } } }

 

4、

5、

 

上一篇:利用PreparedStatement操作Blob和Text数据


下一篇:python之seek用法