我想说一下
每次想找一些技术博客
重复率非常非常非常非常高
就大概10篇有9篇是重复的
有些人就把别人的东西复制过来有意思吗
看我的几百篇博客都是自己一个个字打出来的
虽然没什么技术含量
起码也是我自己写的
什么是JDBC
就是
java database connectivity
java数据库连接
就是用java语言来操作数据库
说一下JDBC的原理
本来SUN公司想要搞一套可以连接所有数据库的api
但是发现根本不可能
因为每个厂商的数据库服务器差异太大了
后来SUN公司就开始和这些数据库厂商讨论
得出的结论就是
SUN公司提供一套访问数据库的规范(就是一组接口)
然后提供连接数据库的协议标准
然后每个数据库厂商就遵循SUN公司的这个规范
提供一套访问自己公司的数据库服务器的API
SUN公司的规范就叫JDBC
每个厂商提供的,遵循了JDBC规范的,可以访问自己的数据库的API
就叫做驱动
jdbc四大配置参数
1.driverClassName: com.mysql.jdbc.Driver
2.ur: jdbc:mysql://localhost:3306/mydb3
3.username:root
4.password:123
我们先下载一个jar包
下载地址是
https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.47.zip
然后我们就开始写java代码吧
public static void main(String[] args) {
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//地址
String url = "jdbc:mysql://localhost";
//账号和密码
String username = "root";
String password = "123";
//连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println(connection);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
很简单吧
url,username,password
现在连接数据库了
我们先来做一些简单的操作
我们通过connection对象来创建Statement
用它来向数据库发送sql语句
我们来试一下
public static void main(String[] args) {
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//地址
String url = "jdbc:mysql://localhost";
//账号和密码
String username = "root";
String password = "123";
//连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println(connection);
//获取statement对象
Statement statement = connection.createStatement();
//来一条sql语句
String sql = "insert into tb_teacher(name) values('abc')";
//执行sql语句
int i = statement.executeUpdate(sql);
System.out.println(i);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
我们可能会遇到一个问题
就是会有一个错误说
no data base selected
就是没有选择数据库
还有一个警告说
Establishing SSL connection without server's identity verification is not recommended
不推荐建立一个没有认证的ssl连接
所以我们把url改一下
加上数据库的名字
再加上我们是否使用ssl
String url = "jdbc:mysql://localhost:3306/abc?useSSL=false";
然后我们再运行一下
public static void main(String[] args) {
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//地址
String url = "jdbc:mysql://localhost:3306/abc?useSSL=false";
//账号和密码
String username = "root";
String password = "123";
//连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println(connection);
//获取statement对象
Statement statement = connection.createStatement();
//来一条sql语句
String sql = "insert into tb_teacher(name) values('abc')";
//执行sql语句
int i = statement.executeUpdate(sql);
System.out.println(i);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
然后结果就是1,
也就是执行结果影响了1条数据
也就是成功插入了1条数据
我们再说一下jdbc的查询
前面的步骤都一样
但是要用一个statement的另一个方法
public static void main(String[] args) {
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//地址
String url = "jdbc:mysql://localhost:3306/abc?useSSL=false";
//账号和密码
String username = "root";
String password = "123";
//连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println(connection);
//获取statement对象
Statement statement = connection.createStatement();
//来一条sql语句
String sql = "select * from tb_teacher";
//查询,返回结果集
ResultSet resultSet = statement.executeQuery(sql);
//遍历结果集
while (resultSet.next()) {
String name = resultSet.getString("name");
String number = resultSet.getString("number");
System.out.println("" + name + "..." + number);
}
//最后要关闭set,statement,connection
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
这样就完成了查询
其实我们这段代码还是有很多不严谨的地方
我们把代码修饰一下
让这段代码更加严谨一点
public static void main(String[] args) throws Exception {
String className = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/abc?useSSL=false";
String username = "root";
String password = "123";
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//加载驱动类
Class.forName(className);
//连接数据库
connection = DriverManager.getConnection(url, username, password);
//获取statement对象
statement = connection.createStatement();
//来一条sql语句
String sql = "select * from tb_teacher";
//查询,返回结果集
resultSet = statement.executeQuery(sql);
//遍历结果集
while (resultSet.next()) {
String name = resultSet.getString("name");
String number = resultSet.getString("number");
int age = resultSet.getInt("age");
System.out.println("" + name + "..." + number + "..." + age);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//最后要关闭set,statement,connection
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
}