Jdbc的简单增删改查(MYSQL)
今天来写一篇简单的jdbc的增删改查的操作,如果还没学jdbc的同学可以看一看。个人认为jdbc的操作比文件简单多了,学会jdbc之后就不用受文件的苦了(反正我没用过文件,哈哈)。而且如果做出的项目的数据能够保存起来,这个项目的逼格立马高了起来啊。
1、工具准备
首先你需要导一个jar文件,如果你的mysql是5.7版本的,可以用我这个
链接:https://pan.baidu.com/s/1wQTkLqd_NniQ9M1hvnIuDw 密码:20t6
如果不是的话在这个网站下载http://dev.mysql.com/downloads/connector/j/
这里给一个怎么在Eclilpse中导入jar包的教程(毕竟这不是重点,看看别人的就行了)
https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html
2、创建一个mysql表
CREATE TABLE tb_person
(
name
varchar(10) DEFAULT NULL,
sex
varchar(5) DEFAULT NULL,
age
int(11) DEFAULT NULL,
id
int(11) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
有这个表,就可以把数据放入数据库了
3、准备工作做完了,就开始进行数据的插入吧
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class FirstTest {
public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";//databaseweb是我创建的数据库名称,前面的东西照着抄就行了
public static final String USER = "root";//抄下来就行
public static final String PASS = "gt1010992686";//数据库密码,每个人设置的都不同,要改
private static Connection conn = null;//抄下来就行
public static void main(String[] args) throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");//抄下来就行
try {
conn = DriverManager.getConnection(URL,USER,PASS);//抄下来就行
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//下面的都是测试数据,怎么好玩你怎么设置
int id = 5;
int age = 19;
String name = "yangan";
String sex = "man";
String sql = "insert into tb_person values(?,?,?,?)";//关键sql语句,tb_person是这个表 ?代表要插入的数据,就把这个理解成%d就行了
PreparedStatement ptmt = conn.prepareStatement(sql); //抄下来就行
ptmt.setInt(4, id); //把数据插入到数据库。数字代表第几个?,需要对应
ptmt.setString(1, name);
ptmt.setString(2, sex);
ptmt.setInt(3, age);
ptmt.execute();//关闭,抄下来就行
}
}
运行代码(id 1~4是我之前写好了的,主要关注id 5)
4、那些看不懂的玩意
讲解一下那些“抄下来就行”的:URL为数据库地址(含端口号),里面的数据库名字需要自己进行修改,你创建的数据库叫啥名字就写啥。USER就写上root就行了,PASS就写上你的数据库密码。Connection是一个连接对象,Class.forName(“com.mysql.jdbc.Driver”)是注册驱动。
conn = DriverManager.getConnection(URL,USER,PASS)就算是建立了和数据库的连接
用一个String保存sql语句,用PrepareStatement类执行这个sql语句。
再用里面的set方法,把数据一一放进数据库,就行了。
5、删除操作
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Deletesql {
public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";//databaseweb是数据库,前面的东西照着抄就行了
public static final String USER = "root";//抄下来就行
public static final String PASS = "gt1010992686";//数据库密码
private static Connection conn = null;//抄下来就行
public static void main(String[] args) throws ClassNotFoundException, SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");//抄下来就行
try {
conn = DriverManager.getConnection(URL,USER,PASS);//抄下来就行
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String sql = "delete from tb_person where name = ?";//删除的sql语句
PreparedStatement ptmt = conn.prepareStatement(sql);
String name1 = "yangan";
ptmt.setString(1, name1);
ptmt.execute();
}
}
有木有发现,刚才插入的那个已经被成功删除了。
细心的小伙伴应该能发现,这两段代码是不是有一大堆相同的部分?而且格式都很固定,如果每次都要写这个一大堆不是很累么,程序员要学会偷懒,那么怎么偷懒呢?静态函数可以帮助我们。把相同的部分封装成一个类,再类里写一个静态函数,直接调用这个类里面的静态函数,就可以得到Connection 对象,这样就可以节省一大堆时间啦
封装好的类代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";
public static final String USER = "root";
public static final String PASS = "gt1010992686";
private static Connection conn = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
try {
conn = DriverManager.getConnection(URL,USER,PASS);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
return conn;//关键,其他的都是虚的,上面一大堆,就是为了这个东西
}
}
6、用封装好的方法来演示修改数据操作
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Altersql {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Connection conn = DBUtil.getConnection();
String sql = "update tb_person set name =? where id = 1";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, "yangan");
ptmt.execute();
}
}
泪流满面有木有,这代码是不是十分简单,只要有了这个类,以后只需要写sql语句就行了
7、查找
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Connection;
public class Test {
public static void main(String[] args) throws SQLException,Exception{
Connection conn = (Connection) DBUtil.getConnection();
Statement stat = conn.createStatement();
String sql = "SELECT * FROM tb_person";
ResultSet rs = stat.executeQuery(sql);
// 输出查询结果
while(rs.next()){
System.out.print(rs.getInt("id")+",");
System.out.print(rs.getString("name")+",");
System.out.print(rs.getString("sex")+",");
System.out.print(rs.getInt("age"));
System.out.print("\n");
}
// 关闭
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stat != null) {
stat.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
为啥这里用的和上面的执行数据库语句不同呢?
Statement是一个执行无参数的sql语句的类,既然查找这条语句没有参数,那么就可以使用这个类。
ResultSet是结果集,用来返回在数据库中存放的结果,然后用get方法,把结果取出来。
.next方法可以向后移动。相当于遍历结果集。
8、总结
这就是简单的数据库jdbc操作了,从这里可以看出,其实连接数据库的方法是很固定的,基本上代码可以说都差不多。灵活的地方在与sql语句,知道更多的sql语句可以用更多的方法对数据库进行操作,这才是关键。最后附上java核心技术2的pdf,有兴趣的小伙伴可以下载下来看一下里面的jdbc是怎么讲的,希望对大家能有一点点的帮助。O(∩_∩)O哈哈
链接:https://pan.baidu.com/s/1MpNnDZ64qXhwou6sLeIYjw 密码:9b1b