jdbc
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 st
Connection 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
}
}
}