此处会有详细说明连接数据库的操作!首先要自己在网上下载好mysql对应版本的包(www.mysql.com——>DOWNLOADS——>MySQL Community——>Connector/J——>选择需要下载的对应版本(Platform Independent “平台独立”)——>下载压缩包——>No thanks, just start my download.),具体操作如下。后续连接数据库操作在文件TestJDBC的注释(JDBC六部曲)中详细体现。Java代码使用IDEA编辑器编辑。
emp表格结构:
emp表格数据:
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-02-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-02-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-04-02 2975.00 20
7654 MARTIN SALESMAN 7698 1981-09-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-05-01 2850.00 30
7782 CLARK MANAGER 7839 1981-06-09 2450.00 10
7788 SCOTT ANALYST 7566 1987-04-19 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-09-08 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-05-23 1100.00 20
7900 JAMES CLERK 7698 1981-12-03 950.00 30
7902 FORD ANALYST 7566 1981-12-03 3000.00 20
7934 MILLER CLERK 7782 1982-01-23 1300.00 10
9999 zzt
dept表格结构:
项目结构:
两文件区别:执行数据库操作。
文件TestJDBC为写(DML:insert,delect,update“数据库更新”) stat.executeUpdate(String sql);
文件TestUpdate为读(DQL:select“数据库不发生变化,只处理结果”) ? = stat.executeQuery(String sql);
文件TestUpdate中内容:(做查询此emp表格中所有信息操作)
package query;
import java.sql.*;
public class TestUpdate {
public static void main(String[] args){
try {
String classname = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
//String sql = "insert into emp(empno,ename) values(9999,'zzt')";
String sql = "select * from emp";
//2.加载驱动类 “有三(5)种方式”
Class.forName(classname);
//DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 或new Driver; 要把catch (ClassNotFoundException e) {}删掉。
//System.setProperty("jdbc.driver","com.mysql.cj.jdbc.Driver"); //System.setProperty("属性名","值");
//或不创建。 因为DriverManager可以默认创建,但性能较慢。 要把catch (ClassNotFoundException e) {}删掉。
//3.获取链接
Connection conn = DriverManager.getConnection(url,user,password);
//操作事务
// JDBC默认的开启事务,默认的自动提交事务。
// 可以自己设置手动提交事务。conn.setAutoCommit(false); 默认是true(自动),false(手动)
// 可以设置事务的隔离级别。conn.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
// 事务最终的处理操作。
// 提交commit();回滚rollback(s);保存环境点Savepoint s = conn.setSavepoint("x");
//开启事务
conn.setAutoCommit(true);
//4.创建状态参数
Statement stat = conn.createStatement();
//5.执行一个Update操作。(DML,DDL)
// int count = stat.executeUpdate(sql); //有返回值,表示数据库更新的行数。
//查询 执行一个query操作,数据库没发生真是变化,需要结果做处理,肯定要返回值。
// 数组[8] Object[8] 集合List<Object> Set<Object> Map<String,Object>
// 一行记录,里面有8个值,怎么存? “Map集合最好——Map<列名key,单元格内值value>”
// empno = 7369 , ename = smith , job = clerk , mgr = 7902 , hiredate = 1980-1-1 , sam = 800 , comm = null , deptno = 10
// 多行记录,14行记录,怎么存? “Set<Map<String,Object>>集合最好”
// set目的是为了存储好多行记录,每一行是一个map对象。
// map目的是为了存储一行中多个单元格的值。key列名 value单元格查询出来。
// 在JDBC中有专门的 ResultSet
//Iterator it = set.iterator();
// it.hasNext();判断是否有下一个元素 it.next();获取
//Properties pro = new Properties(); 可以读取配置文件
// pro.load(inputStream/Reader); 加载输入输出流
// pro.getProperty(key); 通过键找值
//Enumeration en = pro.propertyNames(); 遍历
// en.hasMoreElements(); 判断是否有下一个元素。若有则en.nextElement();获取。
ResultSet rs = stat.executeQuery(sql);
//ResultSet类中有两个常用方法:rs.next();判断是否有下有一个元素 若有则rs.getXXX();获取
while (rs.next()){ //若知道只有一条记录则可用if判断。多条记录就用while。
int empno = rs.getInt("empno"); //也可以写索引号。“从1开始!”
String ename = rs.getString("ename");
Date hiredate = rs.getDate("hiredate"); //此Date存在java.sql包中。(java.util包中也有)
float sal = rs.getFloat("sal");
System.out.println(empno+"--"+ename+"--"+hiredate+"--"+sal);
// System.out.println("执行完毕!");
}
System.out.println("执行完毕!");
stat.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
文件TestJDBC中内容:(做删除此emp表格中其中一条信息操作)
package testjdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
//JDBC六部曲
//1.导包。(将下载好的jar文件包导入此工程里。)
// 在工程里创建一个Directory文件夹lib,将网上下载好的压缩包解压后的文件中的mysql-connecter-java-5.1.48.jar复制到此文件夹中。
// 再建立连接:File——>Project Structure...(工程设置)——>librsries——> + ——>java——>选择此工程lib文件夹里的.jar文件——>Apply OK。
//2.加载驱动类Driver。
// 在.jar文件中有com.mysql——>jdbc——>Driver。 即com.mysql.jdbc.Driver。
//3.获取连接。 DriverManager
// DriverManager.getConnection()
//4.创建状态参数。可以理解为曾经的流。
// conn.createStatement()
//*5.执行数据库操作。
// 写(DML:insert,delect,update“数据库更新”) stat.executeUpdate(String sql);
// 读(DQL:select“数据库不发生变化,只处理结果”) ? = stat.executeQuery(String sql);
//6.关闭。
public class TestJDBC {
public static void main(String[] args){
try {
//2.
String className = "com.mysql.jdbc.Driver";
Class.forName(className); //加载类 类中的静态元素就执行了。 Class clazz = Class.forName("className");
//3.
String url = "jdbc:mysql://localhost:3306/test"; //jdbc:mysql://ip:port/database名
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url,user,password);
//4.
Statement stat = conn.createStatement();
//5.
//数据库中添加一行数据的语句:insert into emp(empno,ename) values(9999,'zzt');
//String sql = "insert into emp(empno,ename) values(9999,'zzt')";
String sql = "delete from emp where empno = 9999";
stat.executeUpdate(sql);
System.out.println("执行完毕");
//6.
stat.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}