java jdbc mysql 实例_java用jdbc连接数据库实例方法

java用jdbc连接数据库详解

本文为大家分享了java使用jdbc连接数据库的具体代码,供大家参考,具体内容如下

package com.tr.jdbc;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import org.apache.commons.dbcp2.BasicDataSource;

public class CollectionFactory {

private final static String dbDriver = "com.mysql.jdbc.Driver";

private final static String dbUrl="jdbc:mysql://localhost:3306/xtest?useUnicode=true&characterEncoding=UTF-8" ;

private final static String dbUser="root";

private final static String dbpwd="root";

private static BasicDataSource dataSource;

//创建dbcp的简单数据源并初始化相关属性

static{

dataSource = new BasicDataSource();

dataSource.setDriverClassName(dbDriver);

dataSource.setUrl(dbUrl);

dataSource.setUsername(dbUser);

dataSource.setPassword(dbpwd);

//指定数据库连接池初始化连接数

dataSource.setInitialSize(10);

//设定同时向数据库申请的最大连接数

dataSource.setMaxTotal(50);

//设置连接池中保持的最少连接数量

dataSource.setMinIdle(5);

//其他属相...参考Apache的公开文档

}

//创建数据库连接对象--并且多线程并发处理(注意Connection导的是Java.sql的包)

public static synchronized Connection creatConnection(){

Connection conn = null;

if(dataSource!=null&&!dataSource.isClosed()){

try {

conn = dataSource.getConnection();

} catch (SQLException e) {

e.printStackTrace();

}

}

return conn;

}

public static void main(String[] args) {

String sql = "select * from s_t_user";

Connection conn = creatConnection();

Statement statement = null;

ResultSet resultSet = null;

try {

statement = conn.createStatement();

resultSet= statement.executeQuery(sql);

int row = 0;

while(resultSet.next()){

row++;

System.out.println("记录行"+row+"col2:"+resultSet.getString(2));

}

} catch (SQLException e) {

e.printStackTrace();

}finally {

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

}

一定要注意不能导错包,我刚才就是因为BasicDataSource的包导错了,写成了import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;应该是import org.apache.commons.dbcp2.BasicDataSource;而一直报这样的错误:

7f5b423f2652f98cd462e2b8f663898a.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

Java JDBC连接数据库常见操作总结

本文实例总结了Java JDBC连接数据库常见操作。分享给大家供大家参考,具体如下:

db.properties配置文件(MySql数据库)

# db.properties

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8

jdbc.username=root

jdbc.password=123456

# paramter for BasicDataSource

initSize=2

maxActive=2

db.properties配置文件(Oracle数据库)

# db.properties

jdbc.driver=oracle.jdbc.OracleDriver

jdbc.url=jdbc:oracle:thin:localhost:1521:orcl

jdbc.username=root

jdbc.password=123456

# paramter for BasicDataSource

initSize=2

maxActive=2

JDBC直接连接数据库

package JDBC;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

/**

* JDBC连接数据库管理工具类

*/

public class JDBC {

static String driver;

static String url;

static String username;

static String password;

static {

try {

Properties cfg = new Properties();

InputStream in = JDBC.class.getClassLoader().getResourceAsStream("db.properties");

cfg.load(in); //将文件内容加载到Properties对象中(以散列表形式存在)

driver = cfg.getProperty("jdbc.driver");

url = cfg.getProperty("jdbc.url");

username = cfg.getProperty("jdbc.username");

password = cfg.getProperty("jdbc.password");

in.close();

} catch (IOException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

/**

* 创建数据库连接

*/

public static Connection getConnection() {

try {

Class.forName(driver); //注册驱动

Connection conn = DriverManager.getConnection(url, username, password);

return conn;

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

/*

* 关闭数据库的连接

*/

public static void close(Connection conn) {

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

通过连接池连接数据库

package JDBC;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

/**

* 连接池版本的数据库连接管理工具类

*/

public class DBUtils {

private static String driver;

private static String url;

private static String username;

private static String password;

private static int initSize;

private static int maxActive;

private static BasicDataSource dbs;

static {

dbs = new BasicDataSource();

Properties cfg = new Properties();

try {

InputStream in = DBUtils.class.getClassLoader().getResourceAsStream("db.properties");

cfg.load(in);

// 初始化参数

driver = cfg.getProperty("jdbc.driver");

url = cfg.getProperty("jdbc.url");

username = cfg.getProperty("jdbc.username");

password = cfg.getProperty("jdbc.password");

initSize = Integer.parseInt(cfg.getProperty("initSize"));

maxActive = Integer.parseInt(cfg.getProperty("maxActive"));

in.close();

// 初始化连接池

dbs.setDriverClassName(driver);

dbs.setUrl(url);

dbs.setUsername(username);

dbs.setPassword(password);

dbs.setInitialSize(initSize);

dbs.setMaxActive(maxActive);

} catch (IOException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

/**

* 创建数据库连接,从连接池中获取连接,如果连接池满了,则等待.

*/

public static Connection getConnection() {

try {

Connection conn = dbs.getConnection();

return conn;

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

/*

* 关闭数据库的连接,归还到连接池

*/

public static void close(Connection conn) {

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

//回滚,仅在禁用自动提交时使用

public static void rollback(Connection conn) {

if (conn != null) {

try {

conn.rollback();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

连接数据库后的使用

Connection conn=null;

try{

conn=DbUtils.getConnection();

Statement st=conn.createStatement();

String sql="select id, name from people";

ResultSet rs=st.executeQuery(sql);

while(rs.next()){

int id=rs.getInt("id");

String name=rs.getString("name");

System.out.println(id+","+name);

}

//结果集元数据

ResultSetMetaData meta = rs.getMetaData();

int n = meta.getColumnCount(); //多少列

for(int i=1; i<=n; i++){

String name= meta.getColumnName(i); //获取列名

System.out.println(name);

}

rs.close();//释放查询结果

st.close();//释放语句对象

}catch(Exception e){

e.printStackTrace();

}finally {

DbUtils.close(conn);

}

预编译SQL执行 及 取消自动提交

try {

conn = DBUtils.getConnection();

conn.setAutoCommit(false); //取消自动提交, 后续手动提交

String sql="update people set name=? where id=? ";

PreparedStatement ps= conn.prepareStatement(sql);

//按照顺序发送参数

ps.setString(1, "Lao Wang");

ps.setInt(2, 100);

//执行"执行计划"

int n=ps.executeUpdate();

conn.commit(); //手动提交

} catch (Exception e) {

e.printStackTrace();

DBUtils.rollback(conn); //异常回滚

}finally{

DBUtils.close(conn);

}

Statement的addBatch(sql)和executeBatch()方法可以批量执行sql。

Statement st=conn.createStatement();

st.addBatch(sql1); //sql1 添加到Statement的缓存中

st.addBatch(sql2);

st.addBatch(sql3);

int[] ary=st.executeBatch(); //执行一批SQL

PreparedStatement也支持批量参数的处理

PreparedStatement ps = conn.prepareStatement(sql);

ps.setInt(1, 1);

ps.setString(2, "wang");

ps.addBatch(); //将参数添加到ps缓存区

ps.setInt(1, 2);

ps.setString(2, "li");

ps.addBatch(); //将参数添加到ps缓存区

int[] ary = ps.executeBatch(); // 批量执行

PreparedStatement ps = conn.prepareStatement(sql);

还可以传入第二个参数用以获取自增主键或者序号自增的列

764f3de16626f840161648f411a444e3.png

更多关于java相关内容感兴趣的读者可查看本站专题:《Java使用JDBC操作数据库技巧总结》、《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值