一,
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import com.oraclewdp.util.JDBCUtils;
public class DBCPDemo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws Exception {
//2、创建数据源需要的属性对象
Properties info=new Properties();
//info.setProperty(key, value);
info.load(DBCPDemo.class.getResourceAsStream("/dbcp.properties"));
//1、取得数据源对象
DataSource dataSource=BasicDataSourceFactory.createDataSource(info);
//3、从数据源取得连接
Connection connection=dataSource.getConnection();
Statement stmt=connection.createStatement();
ResultSet rs=stmt.executeQuery("select * from student");
JDBCUtils.printResult(rs);
}
}
二,连接和打印工具类
package com.oraclewdp.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtils {
private static final String driverClass="com.mysql.jdbc.Driver";
private static final String DB_URL="jdbc:mysql://localhost:3306/jdbctest?user=root&password=root";
// 不让别人实例化
private JDBCUtils() {
}
//驱动只需要加载一次
static{
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(DB_URL);
}
public static void free(ResultSet rs,Statement stmt,Connection conn) {
if (rs!=null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
if (null != stmt) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void printResult(ResultSet rs) {
try {
//1、列头
ResultSetMetaData rsd=rs.getMetaData();
String spaceString="";
for (int i = 1; i <= rsd.getColumnCount(); i++) {
System.out.printf("%12s", rsd.getColumnLabel(i));
spaceString+="---------------";
}
System.err.println("\n"+spaceString);
//表内容
while (rs.next()) {
for (int i = 1; i <= rsd.getColumnCount(); i++) {
System.out.printf("%12s", rs.getObject(i));
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
相关文章
- HTML5新特性之离线缓存技术
- pytest文档5-fixture之conftest.py
- 【进阶3-1期】JavaScript深入之史上最全--5种this绑定全面解析(转)
- h5页 点击返回时关闭_H5页面监听浏览器关闭、刷新、跳转时提示之onbeforeunload和onunload事件...
- java学习——构造类之3!+5!=126
- ss-libev 源码解析local篇(5):ss-local之remote_send_cb
- YOLOv5改进系列(17)——更换IoU之MPDIoU(ELSEVIER 2023|超越WIoU、EIoU等|实测涨点)
- YOLOv5改进系列(19)——替换主干网络之Swin TransformerV1(参数量更小的ViT模型)
- YOLOv5改进系列(21)——替换主干网络之RepViT(清华 ICCV 2023|最新开源移动端ViT)
- YOLOv5改进系列(22)——替换主干网络之MobileViTv1(一种轻量级的、通用的移动设备 ViT)