java编写连接数据库代码

本文介绍了一种使用Java进行数据库连接配置的方法,包括将连接信息保存在配置文件中、创建配置类读取这些信息、定义SQL常量、实现通用数据库操作类以及提供资源释放工具类。
1、把数据库连接信息(用户名,密码等等)保存早配置文件jdbc.properties中。如下jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=BBS
jdbc.username=sa
jdbc.password=ddme123
java编写连接数据库代码


2、之后创建DBConfig.java提取在jdbc.properties中保存的属性值。如下:
package com.dedo.BBS.Jdbc;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class DBConfig {
String driver;
String url;
String username;
String password;//在jdbc.properties中保存的值
public String getDriver() {//添加get方法
return driver;
}
public String getUrl() {
return url;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public DBConfig() {//在构造函数中赋值
super();
InputStream is = null;
try {
is = new FileInputStream("D:\\jdbc.properties");
Properties p = new   Properties();
p.load(is);
this.driver = p.getProperty("jdbc.driver");//对当前类对应的值赋值
this.url = p.getProperty("jdbc.url");
this.username = p.getProperty("jdbc.username");
this.password = p.getProperty("jdbc.password");
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally{
if(is != null)
{
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}


3、 把SQL语句封装成一个常量类,便于开发和维护。
package com.dedo.BBS.Jdbc;

public class SQLConstant {
public static final String addmessage = "INSERT INTO BBSMessage(auther,info,published) VALUES(?,?,?)";//添加公告信息
public static final String getmessage = "SELECT * FROM BBSMessage";//获取公告信息
}

4、由于数据库很多操作是重复的,所以可以把重复的操作建立一个通用操作类JDBCOption.java,并且添加jar包。可以减少重复操作,标准化数据操作。操作分两大类,其中update()用于增删改,query()用于查。如下:
package com.dedo.BBS.Jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.dedo.BBS.Tool.Common;

public class JDBCOption {
private static DBConfig dbconfig = null;

static {
dbconfig = new DBConfig();
try {
Class.forName(dbconfig.getDriver());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static int update(String sql, Object... paramters) {
int returnValue = 0;
Connection conn = null;
PreparedStatement ps = null;

try {
conn = DriverManager.getConnection(dbconfig.getUrl(), dbconfig.getUsername(), dbconfig.getPassword());
ps = conn.prepareStatement(sql);
for (int i = 0; i < paramters.length; i++) {
ps.setObject(i + 1, paramters[i]);
}
returnValue = ps.executeUpdate();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
Common.free(conn, ps, null);
}

return returnValue;
}

public static List query(String sql, Object... paramters) {
List returnValue = new ArrayList();
ResultSet rs = null;
Connection conn = null;
PreparedStatement ps = null;

try {
conn = DriverManager.getConnection(dbconfig.getUrl(), dbconfig.getUsername(), dbconfig.getPassword());
ps = conn.prepareStatement(sql);
for (int i = 0; i < paramters.length; i++) {
ps.setObject(i + 1, paramters[i]);
}
rs = ps.executeQuery();
while (rs.next()) {
ResultSetMetaData md = rs.getMetaData();
Map map = new HashMap();
for (int i = 0; i < md.getColumnCount(); i++) {
map.put(md.getColumnLabel(i + 1), rs.getObject(i + 1));
}
returnValue.add(map);
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
Common.free(conn, ps, rs);
}

return returnValue;
}
}
 
 
5、为tool中创建common.java,其中一些通用操作,比如关闭数据库


package com.dedo.BBS.Tool;

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

public class Common {
 
 public static void free(Connection conn, Statement sm, ResultSet rs) {
  if (rs != null) {
   try {
    rs.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   if (sm != null) {
    try {
     sm.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

   }
   if (conn != null) {
    try {
     conn.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

   }

  }
 }
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值