JDBC总结
这几个星期趁着业余学习了一下JDBC,也顺便做了一个项目,个人的习惯比较喜欢确定完整目标开始学习,针对这个目标学习能筛选掉许多我用不上的知识点,更快的和更好的获得成就感,好也不多说现在来好好总结我所学习的JDBC和利用这些知识完成的项目。
列表如下
- DriverManager类
- Connection类
- Statement类
- ParedStatement类
- ResultSet类
##DriverManager类
这个类是用来管理我们的JDBC的驱动管理常用的方法就是获取,程序与数据库的链接的具体的原理我并没有去一直深入了解。
常用方法
getConnection(String url , String user , String password) | 指定3个入口参数,依次是连接数据库的URL、用户名、密码,来获取与数据库的连接 |
---|---|
setLoginTimeout() | 获取驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位。 |
println(String message) | 将一条消息打印到当前JDBC日志流中。 |
Connection类
这个类就代表了经过DriverManager的管理驱动类以后返回出来的数据库接口,我们可以调用返回执行类来执行SQL语句。
常用方法
close() | 立即释放Connection实例占用的数据库和JDBC资源,即关闭数据库连接` |
---|---|
createStatement() | 创建并返回一个Statement实例,通常在执行无参的SQL语句时创建该实例 |
prepareStatement() | 创建并返回一个PreparedStatement实例,通常在执行包含参数的SQL语句时创建该实例,并对SQL语句进行了预编译处理 |
综合案例
综合前面的两个类的常用方法我们就可以获得一个特定数据库的链接
public static Connection connectionData()
{
Connection connection =null;//connection类连接
String dburl="jdbc:mysql://localhost:3306/studentinformation?useSSL=false&characterEncoding=utf-8";//定义好数据库地址
String name="root";//数据库账号
String passwor="aa5565885";//数据库密码
try {
Class.forName("com.mysql.jdbc.Driver");//加载驱动
connection = DriverManager.getConnection(dburl,name,passwor);//获取数据库链接
}catch (ClassNotFoundException e)
{
e.printStackTrace();
}catch (SQLException e)
{
e.printStackTrace();
}
return connection;
}
Statement类
这个类主要是来静态语句执行语句,但他确实实时的所以这个类和我们之后讲述的一个类有着不一样。
常用方法
executeQuery(String sql) | 执行指定的静态SELECT语句,并返回一个永远不能为null的ResultSet实例 |
---|---|
executeUpdate(String sql) | 执行指定的静态INSERT、UPDATE或DELETE语句,并返回一个int型数值,为同步更新记录的条数 |
close() | 立即释放Statement实例占用的数据库和JDBC资源 |
ParedStatement类
扩展了Statement类实现了动态实时执行Sql语句,可运行时提供参数。
####常用方法
executeQuery() | 在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。 |
---|---|
execute() | 在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。 返回值为int类型 |
setString(int parameterIndex, String x) | 将指定参数设置为给定 Java String 值。 |
ResultSet类
现在我们已经知道如何去执行我们的语句,语句执行会带来而结果也有一个特殊的类,来暂时在内存中存放我们从数据库获取来的结果。
next() | 将指针向下移一行 |
---|---|
getInt() | 以int形式获取此ResultSet对象的当前行中指定列值。如果列值为NULL,则返回值是0 |
getString() | 以String形式获取ResultSet对象的当前行的指定列值。如列值是NULL,则返回null |
综合案例
综合起前面各种类的分析和一个小案例我们写一个获取链接,执行语句,打印结果的案例。
public Connection getConn() {
Connection conn = null;
String url = "jdbc:jtds:sqlserver://localhost:1433;
DatabaseName=db_database15"; // 定义连接数据库的url
String userName = "sa"; // 连接数据库的用户名
String passWord = ""; // 连接数据库的密码
try {
conn = DriverManager.getConnection(
url, userName, passWord); // 获取数据库连接
} catch (SQLException e) {
e.printStackTrace();
}
return conn; // 返回Connection实例
}
public static void main(String[] args) {
SelectUseLike selectLike = new SelectUseLike();
Connection conn = selectLike.getConn(); // 获取数据库连接
try { // 创建Statement实例
Statement statement = conn.createStatement();
String sql = "select * from tb_teacher
where name like '陈%'"; // 定义模糊查询语句
ResultSet rest = statement.executeQuery(sql); // 执行SQL语句
while (rest.next()) { // 循环遍历查询结果集
// 依次获取查询
int id = rest.getInt(1);
String name = rest.getString(2);
String sex = rest.getString(3);
int age = rest.getInt(4);
String salary = rest.getString(5);
System.out.print("教师编号为:" + id + " ");
System.out.print("教师姓名为:" + name + " ");
System.out.print("年龄为:" + age + " ");
System.out.print("性别为:" + sex + " ");
System.out.println("工资是:" + salary + " ");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}