1.加载数据库驱动(com.mysql.jdbc.Driver)

2.创建并获取数据库链接(Connection)

3.创建jdbc statement对象(PreparedStatement)

4.设置sql语句

5.设置sql语句中的参数(使用preparedStatement)

6.通过statement执行sql并获取结果

7.对sql执行结果进行解析处理

8.释放资源(resultSet、preparedstatement、connection)

package cn.wh.jdbc.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; /**
* JdbcTest.java 简单的jdbc编程步骤过程
*/
public class JdbcTest {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 1.加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.创建数据库连接
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8",
"root", "1234");
// 3.书写sql语句
String sql = " select * from user where username=? ";
// 4.创建statement,预处理sql语句
preparedStatement = connection.prepareStatement(sql);
// 5.设置sql里的参数
preparedStatement.setString(1, "张三");
// 6.执行sql,得到结果集
resultSet = preparedStatement.executeQuery();
// 7.遍历结果集,打印输出
while (resultSet.next()) {
System.out.println(resultSet.getString("id") + " "
+ resultSet.getString("username"));
}
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
// 8.释放资源
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();
}
}
} }
}

注意:jdbc存在的问题,如何解决??

答:1.数据库链接创建、释放频繁 造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。

2.Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

3.使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。

4.对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。

 

最新文章

  1. Grunt基本使用-V1.0
  2. golang mgo的mongo连接池设置:必须手动加上maxPoolSize
  3. Disque
  4. Head First 设计模式之工厂模式(Factory Pattern)
  5. xcode6如何支持空模板
  6. Quartz2D复习(一)--- 基础知识 / 绘制线段圆弧 / 图片水印 / 截图
  7. 本地自定义了404 和500 错误处理 部署到IIS上显示 服务器内部错误
  8. bigautocomplete实现联想输入,自动补全
  9. 使用 DB Fixtures 为 Unit Test 提供基础数据,Sails + Mocha 实现。
  10. JavaScript创建对象的写法
  11. 转:Android软件开发之PreferenceActivity中的组件
  12. 在 SSIS package 中使用FTP
  13. 转:用​C​语​言​的​r​a​n​d​(​)​和​s​r​a​n​d​(​)​产​生​伪​随​机​数​的​方​法​总​结
  14. 使用js动态添加组件
  15. CodeForces - 444C
  16. 【亲测】关于HTTP协议~
  17. ASP.net MVC把Html Table导出Excel
  18. Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)
  19. WebForms开发方式以及优缺点,来源《ASP.NET MVC企业级实战》
  20. Docker 技巧:删除 Docker 容器和镜像

热门文章

  1. idea打包SpringBoot项目打包成jar包和war
  2. AtCoder Grand Contest 005F - Many Easy Problems
  3. 星球大战 BZOJ 1015
  4. Unslider--入门篇
  5. dos中定义变量与获取常见的引用变量以及四则运算、备份文件(set用法)
  6. nosql整理
  7. ubuntu下用webbench做网站压力测试
  8. 实验十二 swing图形界面设计
  9. List 与 ArrayList 的使用
  10. android 圆形按钮