Java进行MySQL数据库的数据操作需要有一个专门连接数据库的规范(JDBC),专门负责连接数据库进行数据操 作。各个数据库提供商会根据这套规范(接口)编写相关的实现类,封装成一个 jar 包供用 户下载使用。所以在进行编程时,需要将相应的 jar 包导入到工程文件下的 lib 目录下,并建立依赖。
第一步:加载注册驱动(需在静态代码块中操作)
Class.forName("com.mysql.jdbc.Driver");
第二步:连接数据库
在我们注册了驱动之后,可以通过 DriverManager 获取与数据库的连接,需要传入三个参 数:数据库的地址,登录用户名,登陆密码。注意 Connection 和 DriverManager 类都是 java.sql 包下的,fsgm 是数据库的名字。
Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/fsgm", "root","root");
第三步:操作数据库
例子是使用到我项目中的医院科室查询。
/**
* 查询全部科室信息
*/
public List<Departmentype> findAll1() {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
//存放最后的结果
List<Departmentype> listDT = new ArrayList<Departmentype>();
try {
//连接数据库
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/fsgm", "root","root");
//sql查询语句
String findAllSql = "SELECT * FROM sys_departmentype";
//执行sql语句
st = conn.prepareStatement(findAllSql);
//获取结果
rs = st.executeQuery();
//操作获取到的结果集
while(rs.next()) {
//创建一个类对象存放每一个结果
Departmentype dt = new Departmentype();
//获取结果并添加到类对象中
dt.setDepartmenTypeId(rs.getInt("DepartmenTypeID"));
dt.setdT_Name(rs.getString("DT_Name"));
//将当前结果放到类对象的集合中
listDT.add(dt);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//每次开启资源后要关闭掉
try {
if(conn!=null) {
conn.close();
}
if(st!=null) {
st.close();
}
if(rs!=null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//返回集合
return listDT;
}
结果:
注意点:
1、执行sql语句时有两种方法,Statement和PreparedStatement 的区别:
使用Statement接口Statement接口创建之后,可以执行SQL语句,在Statement中使用字符串拼接的方式,该方式存在句法复杂,容易犯错等缺点,所以Statement在实际过程中使用的非常的少字符串拼接方式的SQL语句是非常繁琐的,中间有很多的单引号和双引号的混用,极易出错。
使用PreparedStatement也是用来执行sql语句的与创建Statement不同的是,需要根据sql语句 创建PreparedStatement。除此之外,还能够通过设置参数,指定相应的值,而不是 Statement那样使用字符串拼接。
2、获取结果时有三个方式,execute 、executeQuery 和executeUpdate的区别
1)、execute可以执行查询语句,然后通过getResult把结果取出来。
2)、execute返回Boolean类型,true表示执行的是查询语句,false表示执行的insert、 delete、update等。
3 )、executeUpdate不能执行查询语,executeUpdate的返回值是int,表示有多少条数据 受到了影响。
4)、 executeQuery 返回查询结果集