您的位置:首页 > 编程语言 > Java开发

JavaJdbc(一)

2013-10-09 20:35 435 查看
1.注册驱动

System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver");

DriverManager.register(new com.mysql.jdbc.Driver);

Class.forName("com.mysql.jdbc.Driver"); //推荐使用这种方式

2建立连接

原则:晚连接,早释放,减少资源的负担

url格式:

jdbc:子协议:子名称://主机名:端口号/数据库名?属性名=属性值&属性名=属性值

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","root");

3、创建语句

Statement st = conn.createStatement();

4.执行语句

ResultSet rs = st.executeQuery(select * from user);

5.处理结果

//逐行遍历

while(rs.next()){

rs.getObject(1); //第一列

rs.getObject(2); //第二列

rs.getObject(3); //第三列

rs.getObject(4); //第四列

}

6.释放资源

//注意关闭先后顺序

rs.close();

st.close();

conn.close();

Connection conn = null;

Statement st = null;

ResultSet rs = null; //ResultSet是java.sql包,不是java.jdbc

try{

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManger.getConnection(url,user,password);

st = conn.createStatement();

rs = st.executeQuery("select * from jdbc");

while(rs.next()){

rs.getObject(1);

rs.getObject(2);

rs.getObject(3);

rs.getObject(4);

}

}finally{

try{

if(rs!=null)

rs.close);

}finally{

try{

if(st!=null)

st.close();

}finally{

try{

if(conn!=null)

conn.close();

}finally{

}

}

}

}

优化1:

package com.crazy.jdbc;

public final class JdbcUtils{

private static String url = "jdbc:mysql://localhost:3306/jdbc";

private static String username = "root";

private static String password = "root";

private JdbcUtils(){

}

//保证驱动只会加载一次

static{

try{

Class.forName("com.mysql.jdbc.Driver");

}catch(ClassNotFoundException e){

throw new ExceptionInInitializerError(e);

}

}

public static Connection getConnection(){

return DriverManger.getConnection(url,username,password);

}

public static void free(ResultSet rs,Statement st,Connection conn){

try{

if(rs!=null)

rs.close);

}catch(SQLException e){

e.printStackTrace();

}finally{

try{

if(st!=null)

st.close();

}catch(SQLException e){

e.printStackTrace();

}finally{

try{

if(conn!=null)

conn.close();

}catch(SQLException e){

e.printStackTrace();

}

}

}

优化2:

//改成单例模式,只有一个实例

package com.crazy.jdbc;

public final class JdbcUtilsSing{

private String url = "jdbc:mysql://localhost:3306/jdbc";

private String username = "root";

private String password = "root";

private static JdbcUtilsSing instance = new JdbcUtilsSing();

private JdbcUtils(){

}

public static JdbcUtilsSing getInstance(){

return instance;

}

//保证驱动只会加载一次

static{

try{

Class.forName("com.mysql.jdbc.Driver");

}catch(ClassNotFoundException e){

throw new ExceptionInInitializerError(e);

}

}

public Connection getConnection(){

return DriverManger.getConnection(url,username,password);

}

public void free(ResultSet rs,Statement st,Connection conn){

try{

if(rs!=null)

rs.close);

}catch(SQLException e){

e.printStackTrace();

}finally{

try{

if(st!=null)

st.close();

}catch(SQLException e){

e.printStackTrace();

}finally{

try{

if(conn!=null)

conn.close();

}catch(SQLException e){

e.printStackTrace();

}

}

}

优化3:

//改成单例模式,只有一个实例+原始模式

package com.crazy.jdbc;

public final class JdbcUtilsSing{

private String url = "jdbc:mysql://localhost:3306/jdbc";

private String username = "root";

private String password = "root";

private static JdbcUtilsSing instance = null;

private JdbcUtils(){

}

public static JdbcUtilsSing getInstance(){

//同时访问时,保证只实例化一次

//双重判断,要求在JDK1.5以上(含)

if(instance==null){

syncronized(JdbcUtilsSing.class){

if(instance==null){

instance = new JdbcUtilsSing();

}

}

}

return instance;

}

//保证驱动只会加载一次

static{

try{

Class.forName("com.mysql.jdbc.Driver");

}catch(ClassNotFoundException e){

throw new ExceptionInInitializerError(e);

}

}

public Connection getConnection(){

return DriverManger.getConnection(url,username,password);

}

public void free(ResultSet rs,Statement st,Connection conn){

try{

if(rs!=null)

rs.close);

}catch(SQLException e){

e.printStackTrace();

}finally{

try{

if(st!=null)

st.close();

}catch(SQLException e){

e.printStackTrace();

}finally{

try{

if(conn!=null)

conn.close();

}catch(SQLException e){

e.printStackTrace();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: