Fork me on GitHub

Java基础复习--jdbc连接数据库

Java基础复习–jdbc连接数据库

jdbc

jdbc是一种用于后台和数据库沟通的技术!!

前提

前提:驱动
打个比方,我们需要的驱动可以比作是油,相对应的,不同的数据库可以比作是车。不同的油驱动着不同牌子的车也就对应着不同的数据库需要不同的驱动。mysql的车就需要加对应mysql的油,也就是驱动!这里驱动就是响应的jar包。

首先需要到 这里 下载驱动mysql的油。并将jar包导入到你项目的lib文件夹下。

jdbc连接数据库的步骤

一共需要五步,分步骤代码为了简洁暂时没写到try catch块中,最后的总样例会写到。

1.加载驱动

1
2
//第一步 通过反射技术加载该类 该类的全路径
Class.forName("com.mysql.jdbc.Driver");

2.创建连接

1
2
3
4
//第二步 创建连接:连接信息url:,用户名,及密码
Connection conn =DriverManager.getConnection
("jdbc:mysql://localhost:3306/demo","root","123456");
//三个字符串分别对应数据库url,用户名,密码

实际开发中我们常常将url,username,password三个字符串分离出来定义成三个静态属性

1
2
3
4
5
private static String url = "jdbc:mysql://localhost:3306/demo";

private static String user = "root";

private static String password = "123456";
1
conn = DriverManager.getConnection(url,user,password);

3.创建声明

1
2
3
4
5
6
//第三步 创建声明 预处理
String sql = "insert into user values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,111);
ps.setString(2,"dz");
ps.setString(3,"123456");

一个preparedstatement是从java.sql.connection对象和所提供的sql字符串得到的,sql字符串中包含问号(?),这些问号标明变量的位置,然后提供变量的值,最后执行语句
注意:左侧类声明声明是prepare是有ed的,而右侧connection的方法是没有ed

4.执行sql语句

语句为增删改时:

1
2
//第四步 执行sql语句
ps.execute();

如果是执行查询语句:

1
2
3
4
5
6
 //将数据库查询的信息放到resultSet结果集中!是集合的一种set
ResultSet resultSet = ps.executeQuery();
//rs是查出的列表形式的数据
while(resultSet.next()){//判断这个集合中有没有向下一个元素
resultSet.getString("username"));
}

resultSet.getXXX(“列名”)可以将该字段的值取出,xxx对应字段类型
实际开发中我们时常将查出的信息再次封装成一个对象,最终生成一个对象的集合

1
2
3
4
5
6
7
8
9
10
List<User> list= new ArrayList<User>();
User user = null;
while(resultSet.next()){
user = new User();
user.setId(resultSet.getInt("id"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
list.add(user);
}
return list;

注意事项:
1.当所查结果是多条数据时,应该用集合装对象!
2.需要在while循环里面new 对象!! 否则 最后一个对象将之前所有数据覆盖!

5.关闭资源

1
2
3
4
5
/**
* 先关闭小的!顺序是rs ps conn
*/
ps.close();
conn.close();

这部分代码我们一般放到finally块中,进行资源的关闭。

jdbc连接数据库实例

建立工具类DataBase 静态方法getConnection() 用于返回connection对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

public class DataBase {
public static Connection getConnection(){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","123");
return conn;
}catch(SQLException e){
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}

数据访问层(Dao)代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class UserDao {
public static List<User> findAllByUsernameAndPassword(String username,String password){
Connection conn = DataBase.getConnection();
PreparedStatement ps = null;

try{
String sql = "select * from user where username=? and password=?";
ps = conn.prepareStatement(sql);
ps.setString(1,username);
ps.setString(2,password);
ResultSet resultSet = ps.executeQuery();
List<User> list= new ArrayList<User>();
User user = null;
while(resultSet.next()){
user = new User();
user.setId(resultSet.getInt("id"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
list.add(user);
}
return list;
}catch (Exception e){
e.printStackTrace();
}finally {
try {
conn.close();
ps.close();

} catch (SQLException e) {
e.printStackTrace();
}

}

return null;

}
}
-------------本文结束感谢您的阅读-------------
0%