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对象解析比较方便。

 

简单的JDBC编程步骤的更多相关文章

  1. JAVA基础知识之JDBC——编程步骤及执行SQL

    JDBC编程步骤 下面以mysql数据库为例, 1.加载驱动 首先需要下载数据库的驱动jar文件,并且在eclipse包中加入到class path中去, 例如mysql的驱动文件 mysql-con ...

  2. JDBC编程步骤

    JDBC编程步骤 加载数据库驱动. 通常使用Class类的forName()静态方法来加载驱动. Class.forName(driverClass) dirverClass: mysql---Cla ...

  3. JDBC 学习笔记(三)—— JDBC 常用接口和类,JDBC 编程步骤

    1. JDBC 常用接口和类 DriverManager 负责管理 JDBC 驱动的服务类,程序中主要的功能是获取连接数据库的 Connection 对象. Connection 代表一个数据库连接对 ...

  4. JDBC 编程步骤

    java访问数据库的步骤如下: 加载数据库驱动 通常使用Class.forName(driverClass)来加载驱动 // 加载MySQL驱动 Class.forName("com.mys ...

  5. javaEE jdbc编程步骤

    1.载入数据库驱动(jar文件) //须要下载一个数据库的jar包,并导入对应的JDBC项目中,创建路径! Class.forName("com.mysql.jdbc.Driver" ...

  6. JDBC概述及编程步骤详解

    目录 一.JDBC概述 二.JDBC编程步骤(以MySQL为例) 1.导入jar包 2.加载数据库驱动 3.通过DriverManager获得Connection对象 3.定义SQL语句 4.利用Co ...

  7. 第十三章.MySQL数据库与JDBC编程(下)

    JDBC的典型用法: JDBC4.2常用接口和类简介: DriverManager:用于管理JDBC驱动的服务类,程序中使用该类的主要功能是获取Connection对象,该类包含如下方法: publi ...

  8. JDBC使用步骤

    JDBC编程步骤 加载驱动程序:Class.forName(driverClass) 加载Mysql驱动:Class.forName("com.mysql.jdbc.Driver" ...

  9. 1Mybatis入门--1.1单独使用jdbc编程问题总结

    1.1.1 jdbc程序 Public static void main(String[] args) { Connection connection = null; PreparedStatemen ...

随机推荐

  1. Java面试题集(五)

    三.开源框架 什么是mybaties? Mybaties是支持普通sql查询,存储过程和高级映射的优秀持久层框架.Mybaties消除了几乎所有的jdbc代码和参数的手工设置以及结果集的检索.Myba ...

  2. [转发]Android 系统稳定性 - ANR(二)

    文章都为原创,转载请注明出处,未经允许而盗用者追究法律责任. 很久之前写的了,留着有点浪费,共享之.编写者:李文栋P.S. OpenOffice粘贴过来后格式有些混乱. http://rayleeya ...

  3. shell的case脚本的简单入门

    shell的case脚本的简单入门 示例1: #/bin/bash a=$ case "$a" in ") echo 'hell 2';; ") echo 'h ...

  4. AC日记——美元汇率 洛谷 P1988

    题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值. 输入输出格式 ...

  5. File类 递归 获取目录下所有文件文件夹

    package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...

  6. Annotation基本概念,作用以及举例说明。

    Annotation即注解,是Jav5新特征,Annotatio提供一些本来不属于程序的数据,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关联.为程序的元素(类. ...

  7. tcp-time-wait-state

    https://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux

  8. android 子菜单

    <!-- 定义基础布局LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/ap ...

  9. C#中值类型和引用类型的差别浅记

    C#中值类型和引用类型的差别浅记         在C#中,变量的类型分为两种.各自是值类型和引用类型.         值类型的变量直接存储值,说得更详细一些,就是值类型变量在内存中直接存储它们自身 ...

  10. 关于HTML中文乱码问题

    系统:ubuntu 14.04 软件:bluefish 一.乱码原因 1.不同编码内容混杂:HTML乱码是因为html编码问题照成(常见gb2312与utf-8两种编码内容同一时候存在照成) 2.未设 ...