本文实例总结了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);
还可以传入第二个参数用以获取自增主键或者序号自增的列
更多关于java相关内容感兴趣的读者可查看本站专题:《Java使用JDBC操作数据库技巧总结》、《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
本文向大家介绍php操作redis数据库常见方法实例总结,包括了php操作redis数据库常见方法实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php操作redis数据库常见方法。分享给大家供大家参考,具体如下: 一、安装php_redis扩展,用以操作redis http://pecl.php.net/package/redis 选择自已系统php版本对应的扩展。 二、redi
3.6 清空数据库 flushdb 删除当前选择数据库中的所有 key。生产上已经禁止。 flushall 删除所有的数据库。生产上已经禁止。
select db-index 默认连接的数据库所有是0,默认数据库数是16个。返回1表示成功,0失败
本文向大家介绍Laravel框架数据库CURD操作、连贯操作总结,包括了Laravel框架数据库CURD操作、连贯操作总结的使用技巧和注意事项,需要的朋友参考一下 一、Selects 检索表中的所有行 从表检索单个行 检索单个列的行 检索一个列值列表 该方法将返回一个数组标题的作用。你也可以指定一个自定义的键列返回的数组 指定一个Select子句 Select子句添加到一个现有的查询$query
本文向大家介绍tp5(thinkPHP5)框架数据库Db增删改查常见操作总结,包括了tp5(thinkPHP5)框架数据库Db增删改查常见操作总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了tp5(thinkPHP5)框架数据库Db增删改查常见操作。分享给大家供大家参考,具体如下: 添加数据insert 添加数据。 tp5还可以通过insertAll插入多条数据。 获取插入的id。 修
本文向大家介绍php pdo连接数据库操作示例,包括了php pdo连接数据库操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php pdo连接数据库操作。分享给大家供大家参考,具体如下: pdo连接数据库的有点是能实现不同数据库之间的转换,而且有事务功能的回滚,更有pdo::prepare();pdo:::execute()函数的预处理查询,所以我个人认为pdo的功能还是比较强大