一.JDBC
JDBC是java提供的一套类和接口,是连接数据库的一套规范.JDBC操作数据库的步骤
1.注册驱动加载驱动类
2.获取数据库连接对象
getConnection(url,user,password)
3.通过连接对象 获取sql语句的执行对象statement
4.通过statement对象来执行sql语句
executeUpdate(sql) 返回值 int类型 用于执行DDL,DML语句
executeQuery(sql) 返回值 Resultset 用于执行DQL
5.处理执行sql后得到的结果集
6.关闭资源
如何处理结果集?
ResultSet resultset = statement.executeQuery(sql);
while(resultset.next()){
1.result.get类型(int)
如果使列用索引
注意从1开始
如果使用*查询 索引是数据库表中的顺序
如果不使用*直接使用字段
那么顺序就是你在sql语句中使用的顺序
2.result.get类型("字段名")
}
二.获取预编译sql语句的对象
目的:防止sql注入
//使用占位符 问号?
//注意使用问号占位符 不用加单引号
String sql = "select * from users where username=? and password=?";
PreparedStatement statement = connection.prepareStatement(sql);
设置占位符的值
参数1 问号的索引 从1开始
参数2 替换问号的值
statement.setObject(1, username);
statement.setObject(2, pass);
三.编写一个JDBC连接工具类
public class JDBCUitl {
//声明连接为成员变量
private static Connection connection;
private static String driverClass;
private static String username;
private static String url;
private static String password;
//私有化构造方法
public JDBCUitl() {
}
//静态代码块
static {
try {
readProperites();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
// 注册失败 没有执行下去的意义
//直接抛出运行时异常
throw new RuntimeException("数据库加载失败");
}
}
//提供一个get方法 获取连接使用
public static Connection getConnection() {
try {
connection = DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
throw new RuntimeException("数据库连接异常");
}
return connection;
}
public static void readProperites() throws IOException {
Properties properties = new Properties();
InputStream inputStream = JDBCUitls.class.getClassLoader().getResourceAsStream("db.properties");
properties.load(inputStream);
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
}
//关闭资源
//把需要要关闭的资源当做参数传进来
public static void close(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet) {
//判断不为空再关闭
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (preparedStatement!=null) {
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}