package com.mm;
import java.sql.ResultSet;
import java.sql.SQLException;// import com.mysql.jdbc.Statement;
//import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.Statement;import java.sql.DatabaseMetaData;public class JDBCMySQL {
static String sql = null;
static MySQLHelper db1 = null; static ResultSet ret = null; public JDBCMySQL() { // TODO Auto-generated constructor stub }public static void main(String[] args) throws SQLException, ClassNotFoundException {
// TODO Auto-generated method stConnection conn = null;
PreparedStatement pStatementstmt = null;
/************************************************************** * 1, 加载驱动 * 加载数据库驱动到jvm。 加载成功后,会将Driver类的实例注册到DriverManager类中。 * */ try { Class.forName("com.mysql.jdbc.Driver"); } catch (Exception e) { System.out.println("加载驱动失败"); e.printStackTrace(); } /*************************************************************** * 2, 链接数据库 获得connect对象 * */ try { conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/new_schema2?useUnicode=true&characterEncoding=utf8&transformedBitIsBoolean=yes", "root", "123456"); } catch (Exception e) { System.out.println(" 链接数据库 失败"); e.printStackTrace(); } /*创建一个Statement •要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 种类型: 1、执行静态SQL语句。通常通过Statement实例实现。 2、执行动态SQL语句。通常通过PreparedStatement实例实现。 3、执行数据库存储过程。通常通过CallableStatement实例实现。 具体的实现方式: */ try { //3, 操作数据库 String querySql = "select * from usr_table " ; //connection 接口 进行 实例化操作 //创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。 pStatementstmt = conn.prepareStatement(querySql); // 第一 个 ? 的内容 //stmt.setInt(1, 1); //通过 statement 可以对数据库 增删改擦 Statement stmt=conn.createStatement(); /* 判断数据库是否存在 表 ,不存在就创建 */ /* 通过连接获取DatabaseMetaData,即调用connection.getMetaData() */ DatabaseMetaData metaData = conn.getMetaData(); //存储查询结果的对象,还可以操作数据。 ResultSet rs1 = metaData.getColumns(null, "new_schema2", "student_9" , null); // Map map = new HashMap(); if(rs1.next()){ System.out.println("存在表 9"); }else{ System.out.println(" 不 存在表 9 "); String creaSql = "create table student_9 (NO char(20), name varchar(20), primary key(NO) )"; int result = stmt.executeUpdate(creaSql); if (result != -1) { System.out.println(" 创建 表成功"); } } //插入数据 /* sql = "insert into student_9 (NO,name) values('008','陶伟基')"; stmt.executeUpdate(sql); */ for (int i = 20; i < 40; i++) { String iString = Integer.toString(i); sql = "insert into student_9 (NO,name) values("+iString+",'zhou')"; stmt.executeUpdate(sql); } sql = "select * from student_9 "; ResultSet rsStudent = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值 System.out.println("学号\t姓名"); while (rsStudent.next()) { System.out .println(rsStudent.getString(1) + "\t" + rsStudent.getString(2));// 入如果返回的是int类型可以用getInt() } //记录集 ResultSet rs= stmt.executeQuery(querySql); //执行查询 // ResultSet rs = pStatementstmt.executeQuery(); System.out.println(" 查询 表所以内容"); while (rs.next()) { System.out.print(rs.getInt("id")+" : "); System.out.print(rs.getString("name") + ", "); System.out.println( rs.getString("age") + ""); System.out.println("----------------------------"); } // 4,关闭数据库 /*关闭JDBC对象 操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 明顺序相反: 1、关闭记录集 2、关闭声明 3、关闭连接对象 */ if (rs != null){ rs.close(); } if (stmt != null) { stmt.close(); } if (pStatementstmt != null){ pStatementstmt.close(); } if (conn != null){ conn.close(); } // statement.execute(" CREATE TABLE emp ( empno INT(4), ename varchar(10) , job varchar(10), hiredare date, sal float(7,2) ) "); // statement.execute(" insert into emp (empno, ename, job, hiredate, sal) values (6060, '李兴华', 'jingli', '2001-09-12', 2000.20) "); } catch (Exception e) { System.out.println("---- shi bai --- "); e.printStackTrace(); // TODO: handle exception }}
}