JDBC连接数据库

1.package com.jdbc.conn.db;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;


public class DbConnInfo {

// 定义数据库驱动,地址,用户名,密码等连接变量
private static String [color=red]driver[/color];
private static String [color=red]url[/color];
private static String [color=red]user[/color];
private static String [color=red]pwd[/color];

// 获得数据库连接
public static Connection getConnection(){

return DbConnLoad.getConnection(driver, url, user, pwd);
}
//关闭连接
public static void close(Connection conn){
DbConnLoad.close(conn);
}

// 关闭语句
public static void close(Statement stmt){
DbConnLoad.close(stmt);
}
// 关闭结果集
public static void close(ResultSet rs){
DbConnLoad.close(rs);
}

// 用静态模块给连接变量赋值
[color=red]static{[/color]

// 方法1,properties对象直接调用方法,取默认值
Properties prop = new Properties();
// 方法2,Properties对象通过流加载外部文件--------------------------
// 方法2.1 InputStream is = DbConnInfo.class.getResourceAsStream("[color=red]InfoConnection.properties[/color]"); //该properties文件在工程的classpath下
// 方法2.2
File f = new File("InfoConnection.properties");

try {
FileInputStream is = new FileInputStream(f);
prop.load(is);
driver = prop.getProperty("info.driver", "默认驱动");
url = prop.getProperty("info.url", "默认地址");
user = prop.getProperty("info.user", "默认用户名");
pwd = prop.getProperty("info.pwd", "默认密码");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
2.0
package com.jdbc.conn.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DbConnLoad {

/**
* 获取数据库链接
* @param driver 驱动类名
* @param url 数据库链接URL
* @param user 用户名
* @param pwd 密码
* @return 如果成功 返回数据库链接,否则返回null.
*/
public static Connection getConnection(String driver, String url, String user, String pwd){

Connection conn = null;
try {
Class.forName(driver);
DriverManager.setLoginTimeout(40); //40秒连不上数据库则放弃
conn = DriverManager.getConnection(url, user, pwd);
conn.setAutoCommit(false);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
conn = null;
}
return conn;

}
/**
* 关闭数据库连接
*/
public static void close(Connection conn){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

/**
* 关闭语句
* @param st
*/
public static void close(Statement st){
if(st != null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/**
* 关闭结果集
* @param rs
*/
public static void close(ResultSet rs){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3.0
package com.jdbc.conn.db;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DbConnTest {

public static void main(String args[])
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM DIM_USER";
conn = DbConnInfo.getConnection();
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString(2));
}
// 在这加上显得更安全,当然不关也可以,因为finally里面也关了
// System.out.println(conn.isClosed());
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
finally{
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
// 也可以直接调用方法关,和直接关 效果上是一样的
DbConnInfo.close(conn);
try {
System.out.println(conn.isClosed());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值