文档章节

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
丰台
高级程序员
私信 提问

暂无文章

2亿用户背后的Flutter应用框架Fish Redux

背景 在闲鱼深度使用 Flutter 开发过程中,我们遇到了业务代码耦合严重,代码可维护性糟糕,如入泥泞。对于闲鱼这样的负责业务场景,我们需要一个统一的应用框架来摆脱当下的开发困境,而这也...

阿里云官方博客
16分钟前
0
0
C++生成随机数:高斯/正态分布(gaussian/normal distribution)

高斯分布也称为正态分布(normal distribution)。 常用的成熟的生成高斯分布随机数序列的方法由Marsaglia和Bray在1964年提出,C++版本如下: #include <stdlib.h>#include <math.h> d...

天蚕宝衣
20分钟前
0
0
从 Jenkins 迁移到 Jenkins X:一场持续交付之旅

背景 在 dailymotion,我们信奉 DevOps 最佳实践,并且重度使用了 Kubernetes。我们的部分产品(并非全部)已经部署在 Kubernetes 上。在迁移我们的广告技术平台时,为了赶时髦(作者你这么直...

微笑向暖wx
24分钟前
0
0
Kafka Producer Consumer

Producer API org.apache.kafka.clients.producer.KafkaProducer 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:...

编程SHA
31分钟前
0
0
在centos上搭建git服务器并自动同步代码

在centos上搭建git服务器并自动同步代码 tortoisegit git centos linux 5k 次阅读 · 读完需要 15 分钟 0 参考文章 CentOS安装Git实现多人同步开发 centos中GIT服务器搭建及使用密钥连接 简述...

linjin200
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部