现在的位置: 首页 > 综合 > 正文

JDBC访问数据库的基本程序

2013年02月25日 ⁄ 综合 ⁄ 共 3285字 ⁄ 字号 评论关闭

以下是jdbc访问数据库的基本程序,今后有时间再完善下。


//属性配置文件
db.properties

driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/itoasvn?userUnicode=false&characterEncoding=GBK
user = root
password =198962

/**
* 数据库连接的提供类

*/
public class ConnectionProvider {

public static Connection getConnection() throws Exception {
      String driver = PropertyReader.get("driver");
     String url = PropertyReader.get("url");
     String user = PropertyReader.get("user");
     String password = PropertyReader.get("password");
    Class.forName(driver);
     return DriverManager.getConnection(url, user, password);
    }

}

import java.io.InputStream;
import java.util.Properties;

public class PropertyReader {
private static Properties ps;

static {
ps = new Properties();
try {
// 假定db.conf文件与PropertyReader.class文件位于同一个目录下
InputStream in = PropertyReader.class
.getResourceAsStream("db.properties");
ps.load(in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public static String get(String key) {
return (String) ps.get(key);
}

}

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

//完整的数据库测试程序
public class ConnectionTest {
// 用于显示查询结果
private static void displayResult(ResultSet rs) throws SQLException {
System.out.println("person表的信息为:");
System.out.println("ID" + "\t" + "NAME");
while (rs.next()) {
System.out.print(rs.getInt("id") + " ");
System.out.println(rs.getString("name"));
}
System.out.println();
}

public static void main(String[] args) {
// 声明变量并初始化
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
PreparedStatement ps = null;

try {
con = ConnectionProvider.getConnection();
} catch (ClassNotFoundException e) {// 缺少驱动程序
System.err.println("ClassNotFoundException:" + e.getMessage());
} catch (SQLException ex) {//
System.err.println("SQLException:" + ex.getMessage());
System.out.println("出现异常");
} catch (Exception e) {
e.printStackTrace();
}

try {
// 创建statement类对象
stmt = con.createStatement();

// 1 创建person表,若person表已建立,会产生异常——SQLException:ORA-00955: 名称已由现有对象使用
stmt
.executeUpdate("create table person(id int primary key,name char(20))");

// 2利用statement增加表中的记录,向person表中插入2条记录
stmt.executeUpdate("insert into person values(1,'火影fans')");
stmt.executeUpdate("insert into person values(2,'黑崎一护')");

System.out.println("第1次添加记录后表的信息为:");

// 3.利用Statement查询数据库,查询数据库表,取得返回的数据集
rs = stmt.executeQuery("select * from person");
// 显示结果集
displayResult(rs);

// 4利用PreparedStatement执行数据库查询和更新
ps = con
.prepareStatement("insert into person(id,name) values(?,?)");
ps.setInt(1, 3);
ps.setString(2, "宇智波@鼬");
ps.executeUpdate();
System.out.println("第2次添加记录后表的信息为:");
rs = stmt.executeQuery("select * from person");
// 显示结果集
displayResult(rs);

// 修改person表中Id为3的姓名
ps = con.prepareStatement("update person set name= ? where id = ?");
ps.setInt(2, 3);
ps.setString(1, "冥王-雷利");
ps.executeUpdate();
ps = con.prepareStatement("select * from person");
rs = ps.executeQuery();
System.out.println("修改id为3的姓名后,表的信息为:");
displayResult(rs);

// 删除数据库表person
ps = con.prepareStatement("drop table person");
ps.executeUpdate();
System.out.println("person表已成功被删除");

} catch (SQLException ex) {
System.err.println("SQLException:" + ex.getMessage());
System.exit(1);
} finally {// 及时关闭相关连接,回收系统资源
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}

抱歉!评论已关闭.