步骤:
1、idea创建maven项目;
2、在mysql里创建一个测试库;
3、敲入以下代码:
//根据自己定义的包名填写
package com.xxx;
import java.sql.*;
public class JdbcTest {
//加载驱动
//创建连接
//设置sql语句
//创建statement
//设置参数
//执行查询,得到ResultSet
//遍历ResultSet,输出结果
//释放资源
public static void main(String[] args) {
System.out.println("hello world,jdbc!");
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 通过驱动管理类获取数据库链接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "填入用户名", "填入密码");
// 定义sql语句 ?表示占位符
String sql = "select * from user where name = ?";
// 获取预处理statement
preparedStatement = connection.prepareStatement(sql);
// 设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
preparedStatement.setString(1, "李四");
// 向数据库发出sql执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
// 遍历查询结果集
while (resultSet.next()) {
System.out.println(resultSet.getString("id") + " " + resultSet.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
if (resultSet != null) {
try {
resultSet.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 (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
测试的时候发现问题:
1、Class.forName("com.mysql.jdbc.Driver");这是在哪加载的数据库驱动?一开始编译的时候发现找不到该驱动,所以就找下驱动的路径之类,后面发现在pom.xml里面是没有引入该驱动的,所以加入后,自动下载,编译通过。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
总结下步骤:
1,使用jdbc编程需要连接数据库,注册驱动和数据库信息
2,操作Connection,打开Statement对象
3,通过Statement对象执行SQL,返回结果到ResultSet对象
4,使用ResultSet读取数据,然后通过代码转化为具体的POJO对象
5,关闭数据库相关的资源。
总结和思考以下几点:
1、是否每次对数据库进行操作都需要重新开启连接,如果完成数据操作后,还需要关闭数据库连接?是否可在程序开启时开启数据库连接,程序关闭时关闭数据库连接。这样是否会占用资源?(频繁操作数据库连接,会消耗数据库资源)
2、修改sql语句时还要修改java代码,不易维护;
待续。。。。