1、查询一个用户表,将所有用户封装到一个list 里面去展示
说明:所示的代码里面我要连接的数据库是 nz2001,所操作的表示的表示user_info表
其中的表设计如图
package com.qianfeng.ps.am.secend;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DemoList {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1:3306/nz2001";
String user = "root";
String password ="123456";
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null; //结果集
try {
Class.forName("com.mysql.jdbc.Driver"); //加载驱动use
con = DriverManager.getConnection(url,user,password); //获取连接
//从现在开始,养成良好的习惯; 不用*
String sql = "select uid,uname,upass,uage from user_info";
//获取预处理对象
ps = con.prepareStatement(sql); //给了sql
//执行查询 得到结果集
rs = ps.executeQuery();
//新建一个集合 ; 将结果集里面的数据, 封装到这个集合里面去
List<UserInfo> list = new ArrayList<UserInfo>();
UserInfo ui;
//一次循环,是一行(条)数据
while(rs.next()) { //遍历查询结果;每循环一次,就代表有一行数据
//实例化一个UserInfo的对象;
ui = new UserInfo(); // 每次都要实例化对象
//要将这个数据保存到 ui对象里面去
ui.setUid(rs.getInt("uid"));
ui.setUname(rs.getString("uname"));
ui.setUpass(rs.getString("upass"));
ui.setUage(rs.getInt("uage"));
//把这个ui对象,添加到集合里面去
list.add(ui); //存进去的不是ui这个引用名称,存的是引用 x001x01 x002123 x1231231
}
//关闭连接
rs.close();
ps.close();
con.close();
for(UserInfo aa : list) {
System.out.println(aa);
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
2、使用配置文件的方式封装DBtuil
package com.qianfeng.ps.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtils {
// 不变
static final String URL = "jdbc:mysql://127.0.0.1:3306/nz2001?rewriteBatchedStatements=true";
static final String USER = "root";
static final String PASS_WORD = "123456";
// 1: 加载驱动,在我们整个项目里面,只需要跑一次;
static {
// 加载驱动;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 提供静态方法获取数据库的连接;
/**
* 返回一个数据库的连接
*
* @return
*/
public static Connection getConnection() {
try {
return DriverManager.getConnection(URL, USER, PASS_WORD);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 提供静态方法,关闭我们的结果集; 关闭我们的 ps对象; 关闭我们的连接对象;
public static void close(Connection con, PreparedStatement ps, ResultSet rs) {
closeResultSet(rs); // 关闭结果集
closePreparedStatement(ps); //关闭操作数据库的对象
closeConnection(con);//关闭连接
}
private static void closeResultSet(ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private static void closePreparedStatement(PreparedStatement ps) {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private static void closeConnection(Connection con) {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3、java操作数据库的步骤和主要的接口类
**
步骤
-
导入JDBC驱动包:需要下载包含数据库编程所需的JDBC的jar包。
-
注册JDBC驱动程序:要求您初始化驱动程序,以便您可以打开与数据库的通信通道。
-
创建连接:需要使用 D riv e r M a n a g e r.g e t C o n n e c tio n ()
方法创建一个Connection对象,该对象表示 与数据库的物理连接。 -
执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。
-
从结果集中提取数据:需要使用相应的 R e s ult S e t .g e t X X X () 方法从结果集中检索数据。
-
释放资源:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。
**
步骤详细操作
**
(1)导入jar包,在项目下创建lib目录,把mysql的jdbc包放入此目录,并添加到build path中(idea不 同)。
如图是数据库驱动
如图
(2)注册驱动
第一种方式(推荐写法):Class.forName()
注册驱动程序最常见的方法是使用Java的Class.forName()方法,将驱动程序的类文件动态加载到内 存中,并将其自动注册
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
第二种方式:是使用静态DriverManager.registerDriver()方法。
try {
Driver myDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
(3)获取连接
3.1数据库URL配置
加载驱动程序后,可以使用DriverManager.getConnection()方法建立连接。为了方便参考,让我列出 三个重载的DriverManager.getConnection()方法
- getConnection(String url
**
getConnection(String url,Properties prop)
** - getConnection(String url,String user,String password)
创建数据库连接对象
String URL = "jdbc:mysql://localhost:3306/emp";
String USER = "root";
String PASS = "root" Connection conn = DriverManager.getConnection(URL, USER, PASS);
主要的接口
Statement | 用于对数据库进行通用访问。在运行时使用静态SQL语句时很有用。 Statement接口不能接受参数。 |
---|---|
PreparedStatement(推 荐使用) | **当您计划多次使用SQL语句时使用。PreparedStatement接口在运行时接 受输入参数。 |
** |