文档章节

JDBC访问数据库的基本程序

FansUnion
 FansUnion
发布于 2015/10/22 10:30
字数 623
阅读 2
收藏 0
点赞 0
评论 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
丰台
高级程序员

暂无文章

python3.6用的外库遇到的问题

要用到wmi库 pip install wmi 装后不能用还要安装pywin32库。 要用到crypto加密模块安装pip instal pycrypto装后不能用。要安装pycryptodome。...

oisan_
14分钟前
0
0
select, poll, epoll I/O复用介绍

什么是I/O复用? 内核监视多个文件描述符(I/O文件句柄),一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。 I/O多路复用又被称为“事件驱动”(比如读写事...

xiaoxlm
15分钟前
0
0
【Spring 系列 给IOC容器添加组件的几种方式总结】

给Spring 注册Bean的几种方式总结。其中使用@Import注解是Spring Boot 完成自动配置的一个核心注解。 1、Spring 中给IOC容器添加组件的几种方式 在Spring的配置文件中,配置Bean(基于XML方式...

HansonReal
16分钟前
4
0
bootstrapTable语言包设置

###方法一引入不同的语言包 <script src="bootstrap-table-zh-CN.js"></script> ###方法二引入全语言包 <script src="bootstrap-table-locale-all.min.js"></script>//然后在初始化前设计默......

momo1987
16分钟前
0
0
Saltstack 常用命令

1、拷贝文件到客户端 # salt 'slaver.test.com' cp.get_file salt://apache.sls /tmp/cp.txt 2、拷贝目录到客户端 # salt 'slaver.test.com' cp.get_dir salt://test /tmp 3、显示存活的客户......

硅谷课堂
17分钟前
0
0
致初学者-如何学好Python这门编程语言?[图]

致初学者-如何学好Python这门编程语言?[图]: 对于很多Python3初学者,往往会面临以下问题:Python2和Python3我该学习哪一个?是否要安装Linux系统学习Python?Python3有各种版本我该安装哪...

原创小博客
20分钟前
1
0
E31---setopt=protected_multilib=false

今天在云服务器上装nginx,需要先安装一些依赖库比如zlib, ,但是安装zlib时候报错。 yum install -y zlib zlib-devel 1 (-y 指的是如果需要选yes no的自动y)下面是报错 Protected multil...

侠客行之石头
24分钟前
0
0
HTTP常见面试题

Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443 在OSI 网络模型中,H...

JK_OPERA
25分钟前
0
0
python爬取站长素材网页图片保存到ppt中

网站地址:http://sc.chinaz.com/tupian/index.html 直接上代码: import requestsfrom bs4 import BeautifulSoupfrom pptx import Presentationfrom pptx.util import Inchesimpor......

你为什么不吃药
27分钟前
1
0
Ubuntu 18.04 swap空间的修改

一、准备工作 执行“sudo swapon -s”命令,查看是否已经存在swap file 二、修改swap file # 如果第一步存在swapfile则需要先禁用sudo swapoff /swapfile# 修改swap 空间的大小为2Gs...

Iceberg_XTY
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部