参考到博客:https://www.cnblogs.com/centor/p/6142775.html
工具:eclipse
MySQL5.6
MySQL连接驱动:mysql-connector-java-5.1.27.jar
链接:https://pan.baidu.com/s/18tUdoRDFN8hljPJgGDtLEg 提取码:5krm
总感觉驱动会和版本有关系,但是在具体使用过程中没有去对比,所以不太清楚具体的问题,那就遇到了在解决吧。
只是找了下相应的资料,就贴在下面了:
这个是我的mysql配置版本
那准备工作做好了,就开始我们的测试。
===========================================================================================
那我们就开始创建java工程了:
加载驱动:
1. 在工程目录中创建lib文件夹,将下载好的JDBC放到该文件夹下,如下图所示:
2. 右键工程名,在java build path中的Libraries分页中选择Add JARs...,选择刚才添加的JDBC,如下图:
3.准备好自己的数据包
这里就简单的弄两条数据了,主要是记录下学习的内容
CREATE TABLE usertable(
empno INT(4) PRIMARY KEY,
ename VARCHAR(10),
job VARCHAR(9),
hiredate DATE,
sal FLOAT(7,2)
) ;
insert into usertable (empno,ename) values (1,'tan');
insert into usertable (empno,ename) values (2,'hu');
4.java操作mysql数据的简单的代码:
package javasql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@SuppressWarnings("unused")
public class javasql {
public static void main(String[] args) {
//声明Connection对象
Connection con;
//驱动程序名
String driver = "com.mysql.jdbc.Driver";
//URL指向要访问的数据库名mydata
String url = "jdbc:mysql://localhost:3306/mytest";
//url的格式: 大协议:子协议://IP地址:端口号/库名?参数=参数值
//MySQL配置时的用户名
String user = "root";
//MySQL配置时的密码
String password = "123456";
//遍历查询结果集
try {
//加载驱动程序
Class.forName(driver);/*Class.forName("");的作用是要求JVM查找并加载指定的类。
加载类,这里会调用静态方法DriverManager.registerDriver(new 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 usertable";
//3.ResultSet类,用来存放获取的结果集!!
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("执行结果如下所示:");
System.out.println("-----------------");
System.out.println("序号" + "\t" + "姓名");
System.out.println("-----------------");
String job = null;
String id = null;
while(rs.next()){//rs为一个查询数据库的结果集。next()就是判断是否到了最后一条记录
//获取stuname这列数据
job = rs.getString("ename");//获取对应该字段的记录内容
//获取stuid这列数据
id = rs.getString("empno");
//输出结果
System.out.println(id + "\t" + job);
}
rs.close();
con.close();
} catch(ClassNotFoundException e) {
//数据库驱动类异常处理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
//数据库连接失败异常处理
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("数据库数据获取结束!!");
}
}
}
结果如下图所示:
==================================================================================
上面初步对JAVA的jdbc的操作有了个大致的了解,那接下来,
1 先了解下JDBC中使用的几个类对应的方法,主要为下面的5种接口:
2 简单的总结下,java操作mysql的增删改查的操作:
-------------------
具体给个接口的方法的功能详细请查看:https://blog.csdn.net/know9163/article/details/80574315
其中用到的类(主要由4个类构成),和对应的功能如图所示:
下面只是做简单的指出:
1 Connection接口
- Connection与特定数据库的连接(会话),在连接上下文中执行SQL语句并返回结果。
- DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上,主要的使用方法如下:
-Mysql
Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");
-Oracle
Connection con = DriverManager.getConnection("jdbc:oracle:thin@host:port/database", "user", "password");
2 Statement接口
- 用于执行静态SQL语句并返回它所生成结果的对象。
- 三种Statement类:
- (1)Statement:
由createStatement创建,用于发送简单的SQL语句(不带参数)
- (2)PreparedStatement:
- 继承自Statement接口,有preparedStatement创建,用于发送含有一个或者多个输入参数的SQL语句。PreparedStatement对象
比Statement对象效率更高,并且是防止SQL注入。我们一般都使用PreparedStatement。
- (3)CallableStatement:
- 继承自preparedStatement。由方法prePareCall创建,用于调用存储过程。
- 常用的Statement方法
- execute():运行语句,返回是否有结果集。
- executeQuery():运行select语句,返回ResultSet结果节
- executeUpdate():运行insert/update/delete操作,返回更新的行数。
4 Driver接口
- Driver接口由数据库厂家提供,对于Java开发者而言,只需要使用Driver接口就可以了。
- 在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序。不同的数据库有不同的装载方法。
- 驱动:就是各个厂商实现Sun公司提出的JDBC接口。即对Connection等接口的实现类的jar文件。
- 装载mysql驱动:Class.forName("com.mysql.jdbc.Driver");
- 装载oracle驱动:Class.forName("com.jdbc.driver.OracleDriver");
DriverManager接口
- DriverManager接口是JDBC的管理层,作用于用户和驱动程序之间。
- DriverManager跟踪可用的驱动程序,并在数据库和相应的驱动之间建立连接。
5. ResultSet接口
- Statement执行SQL语句时返回Result结果集。
- ResultSet提供的检索不同类型字段的方法,常用的有:
- getString():获得在数据库里是varchar,char等数据类型的对象。
- getFloat():获得数据库里是Float类型的对象
- getDate():获得数据库里是Date类型的对象
- getBoolean():获得数据库里是Boolean类型的数据
最后操作完之后的,关闭顺序:
- 依序关闭使用的对象和连接
Result->Statement->Connection
下面就是简单的介绍下,java中的增删改查了,其实前面的部分大家知道了,之后的内容就和我们平常操作数据库是一样的了,只是换了种语言,换了一种API。
增加、删除和修改数据:
增加数据:
String name;
String id;
PreparedStatement psql;
ResultSet res;
//预处理添加数据,其中有两个参数--“?”
psql = con.prepareStatement("insert into usertable (empno,ename,job,hiredate,sal) "
+ "values(?,?,?,?,?)");
//注:这里的index里面的 1,2,3,4,5就是指的上面语句中第几个?的位子,即就是动态的执行SQL,后附值
psql.setInt(1, 3212); //设置参数1,创建id为3212的数据
psql.setString(2, "jun"); //设置参数2,name 为jun
psql.setString(3, "manager"); //设置参数3 为职称
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
Date myDate2 = dateFormat2.parse("2010-09-13");
psql.setDate(4,new java.sql.Date(myDate2.getTime()));
psql.setFloat(5, (float) 2000.3);
psql.executeUpdate(); //执行更新
更新数据:
PreparedStatement psql;
//预处理更新(修改)数据,将jun的sal改为5000.0
psql = con.prepareStatement("update usertable set sal = ? where ename = ?");
psql.setFloat(1,(float) 5000.0);
psql.setString(2,"jun"); //动态的给sql附完值 , 完成了完整的SQL语句
psql.executeUpdate(); //执行update跟新语句,实现更新数据
删除数据:
PreparedStatement psql;//预处理删除数据
psql = con.prepareStatement("delete from usertable where sal > ?");
psql.setFloat(1, 4500); //动态的给sql附完值 , 完成了完整的SQL语句
psql.executeUpdate(); //执行delete删除语句,实现数据删除提交
psql.close();
|