文档章节

JDBC访问数据库的基本程序

FansUnion
 FansUnion
发布于 2015/10/22 10:30
字数 623
阅读 2
收藏 0

以下是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();
}
}
}
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

共有 人打赏支持
FansUnion
粉丝 57
博文 858
码字总数 825464
作品 0
丰台
高级程序员

暂无文章

05-《深度拆解Java虚拟机》之JVM是如何执行方法调用的?(下)

一、问题引入 我们知道,设计模式大量使用了虚方法来实现多态。但是虚方法的性能效率并不高,所以作者就想在此基础上写篇文章,评估每一种设计模式因为虚方法调用而造成的性能开销,并且在文...

飞鱼说编程
24分钟前
1
0
nginx统一入口 多服务出口

nginx配置多ip和端口统一调用入口log_format中$upstream_addr 标识打印转发的url地址配置upstream和locationhttp {include mime.types;default_type application/octet-stream...

GoldenVein
26分钟前
1
0
阿里P9架构师谈:高并发网站的监控系统选型、比较、核心监控指标

在高并发分布式环境下,对于访问量大的业务、接口等,需要及时的监控网站的健康程度,防止网站出现访问缓慢,甚至在特殊情况出现应用服务器雪崩等场景,在高并发场景下网站无法正常访问的情况...

我是你大哥
28分钟前
1
0
华为HiAI 助力苏宁易购,让你尽享完美视觉购物体验!

还在感慨商品照片与实物存在差距,又要退货? 还在抱怨被忽视的图片小细节,影响了生活品质? 想要“买买买”, 又担心海量的商品图片耗光你的流量? 就在近期 搭载HiAI能力的苏宁易购新版上线...

华为终端开放实验室
29分钟前
1
0
聊聊redisson的RMap的computeIfAbsent操作

序 本文主要研究一下redisson的RMap的computeIfAbsent操作 实例 @Test public void testRMapComputeIfAbsent(){ Config config = new Config(); config.useSingleS......

go4it
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部