JDBC概念
JDBC就是使用java语言操作关系型数据库的一套API
全称(Java DataBase Connectivity) java数据库连接
JDBC本质:
官方(sun公司) 定义的一套操作关系型数据库的规则,即接口
各个数据库厂商去实现这套接口,提供数据库驱动jar包
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中是实现类
JDBC好处:
各数据库厂商使用相同的接口,java代码不需要针对不同的数据库分别kaif
可以随时替换底层数据库,访问数据库的java代码基本不变
案例:
先要创建工程导jar包:
在eclipse中导包的操作为:右击你创建的工程,点击new->folder->建一个文件夹,把你的包复制到文件夹下->右击你导好的包->点击Build path ->configureBuildpath->libraries->modulepath->add jars ->选择要添加的包->Apply and close
package lib;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Test {
public static void main(String[] args) throws Exception {
//注册驱动,固定格式
Class.forName("com.mysql.cj.jdbc.Driver");
//获取连接
String url="jdbc:mysql://127.0.0.1:3306/school";//前面是默认的,school为你自己的数据库名称
String userName="root"; //你mysql数据库的用户名
String passWord="666";//你mysql数据库的密码
Connection con= DriverManager.getConnection(url, userName, passWord);
//定义sql
String sql="UPDATE stu set s_class='软件2班' where s_name='关羽'";
//获取执行sql的对象 Startement
Statement st=con.createStatement();
//执行sql
int count=st.executeUpdate(sql);
//处理结果
System.out.println(count);
//关闭资源
st.close();
con.close();
}
}
执行完毕后,数据库已经发生了改变
如果运行中出现“Error occurred during initialization of boot layer”
原因是由于JDK9及以上版本引入了模块,所以在default package建立一个单独运行的类,就无法通过编辑。需要先删除module-info.java,删除之后,再运行就可以了。
String url="jdbc:mysql:///school?useSSL=false&useUnicode=true&characterEncoding=UTF-8";//解决警告,防止乱码
package com.chen.been;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnBean {
Connection conn;
private final String DRIVER = "com.mysql.jdbc.Driver";
private final String CONN = "jdbc:mysql:///school?useUnicode=true&characterEncoding=utf8";
private final String USER_NAME = "root";
private final String PASSWORD = "666";
public Connection getConn() {
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(CONN, USER_NAME, PASSWORD);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}