您的位置:首页 > 编程语言 > Java开发

JDBC学习总结_1_PreparedStatement

2017-08-11 21:37 197 查看
学的东西多了就容易忘记, 希望通过写总结的方式记录一些重要的知识点, 也便于日后复习 最重要的是每次总结都是对相关知识的重新思考 理解的越深入,记忆越深刻;

jdbc的引入

各种数据库都是不一样的,也就是说java程序员需要对不同的数据库连接提供不同的实现, 但是数据库厂商的数据库一般不是开源的 ,不了解内部原理是没法儿实现, 再者数据库对开发人员而言只是一个存储数据的工具,花费如此大的精力在这上面未免也太蠢了. 最好的方式就是java提供接口, 数据库厂商自己来实现;

java提供访问数据库的统一规范称为JDBC, 而各大数据库厂商提供规范的实现类称为驱动;

每个数据库厂商都要提供自己的驱动,用来连接自己公司的数据库; 而程序员只需要针对这个规范来编程

JDBC的开发步骤:

1.注册驱动

DriverManager:管理了一组jdbc的操作 类

static void registerDriver(Driver driver); 这个方法用来注册驱动.参数Driver是一个接口, 在数据库驱动有具体实现;

通过查看 com.mysql.jdbc.Driver的源码 发现:

static {
try {
// 驱动类中的静态代码块已经做了注册驱动的操作,也就是说 我们只需要加载
// com.mysql.jdbc.Driver类的字节码文件
// Class.forName("com.mysql.jdbc.Driver");
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}


2.获得连接

static Connection getConnection(String url, String user, String password)

参数1:告诉我们连接什么类型的数据库及连接那个数据库

协议:数据库类型:子协议 参数

mysql: jdbc:mysql://localhost:3306/数据库名称

oracle: jdbc:oracle:thin@localhost:1521@实例

3.获得sql语句执行对象

Statement与PreparedStatement的区别:

后者是预编译语句执行对象, 相比statement而言,它有两个优点:

(1). PreparedStatement的sql语句可以有参数(?占位符), 避免的SQL语句中进行字符串拼接带来的安全隐患(注入攻击).

(2). 数据库可以对预编译的sql语句进行缓存, 也就是说,当用户在对数据库进行批量操作 或是 重复操作 时,PreparedStatement的执行效率相当明显的;

4.执行sql语句

5.处理结果

ResultSet接口

boolean next():判断是否有下一条记录,若有返回true且将光标移到下一行,若没有呢则返回false

光标一开始处于第一条记录的上面

6.释放资源

实际开发中我们会将连接数据库要用到的数据写入配置文件,下面介绍操作配置文件的两种方法 :

(1)若我们的配置文件为properties,并且放在src目录下.

我们可以通过 ResourceBundle工具快速获取里面的配置信息

使用步骤:

1>.获取ResourceBundle 对象:

static ResourceBundle getBundle(“文件名称不带后缀名”)

2>.通过ResourceBundle 对象获取配置信息

String getString(String key) :通过执行key获取指定的value

(2)通过IO流和Properties

private static void readConfig() throws IOException{
//通过类加载器来获得配置文件路径;
InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");
Properties pro = new Properties();
pro.load(in);
driverClass = pro.getProperty("driverClass");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdbc java 数据库