因为比较简单 ,就直接上代码了。。
package com.suk1m.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 通过jdbc程序总结问题
* @author suk1M
*
*/
public class JdbcTest {
/**
* 1.数据库连接,使用时就创建,不适用就立即释放,对数据库进行频繁的开启和关闭,造成数据库资源浪费,影像数据库性能。
* 解决方案:使用数据库连接池来管理数据库连接
*
* 2.将sql语句硬编码到java代码中,若需sql修改,则需要重新编译java代码,不利于系统维护。(只要出现【硬编译】三个字都会不利于系统维护)
* 解决方案:将sql语句配置在xml文件中,即使sql变化,也不需要重新编译。
*
* 3.向ps设置参数,对占位符的位置和参数赋值,硬编码在java代码中,不利于系统文化
* 解决方案:将sql语句、占位符、参数全部配置在xml中。
*
* 4.取结果集数据(从rs遍历结果集数据时,存在硬编码,将要获取的字段进行硬编码),不利于系统维护。
* 解决方案:
* 设想:将查询到的结果集,自动映射成java对象。
*
*/
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection("数据库url", "数据库用户名", "数据库密码");
String sql = "select * from pf_customer where name=?";
ps = conn.prepareStatement(sql);
ps.setString(1, "18620990000");
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("id") + " " + rs.getString("sex"));
}
}catch (Exception e) {
e.printStackTrace();
}finally{
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(ps != null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}