java连接数据库——JDBC连接数据库
DBUtil.java // 数据库操作文件
- package com.bjpowernode.jdbc.util;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Properties;
- public class DBUtil {
- private static String driver ;
- private static String url ;
- private static String uname ;
- private static String pwd ;
- static{
- try {
- //创建集合类对象
- Properties properties = new Properties();
- //把文件封装成字节输入流
- InputStream inStream = new FileInputStream(new File("./src/DBConfig.properties"));
- /*
等同于 ResourceBundle isStream = ResourceBundle.getBundle("com.bjpowernode.jdbc.util.DBConfig"); //注意:DBConfig 不要添加后缀- */
- //把字节流加载到集合类中,在内存中以key和value的格式形成
- properties.load(inStream);
- //通过key获得value
- driver = properties.getProperty("driver");
- url = properties.getProperty("url");
- uname = properties.getProperty("uname");
- pwd = properties.getProperty("pwd");
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new RuntimeException("读取配置文件失败!",e);
- }
- }
- //获得连接
- public static Connection getConnection (){
- Connection conn = null;
- try {
- //1:注册驱动
- Class.forName(driver);
- conn = DriverManager.getConnection(url,uname,pwd);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new RuntimeException("连接数据库失败!",e);
- }
- return conn;
- }
- //释放资源
- public static void close(ResultSet rs ,Statement pstm ,Connection conn){
- try{
- if (rs != null){
- rs.close();
- }
- }catch(SQLException e){
- e.printStackTrace();
- throw new RuntimeException("rs关闭失败!",e);
- }
- try{
- if (pstm != null){
- pstm.close();
- }
- }catch(SQLException e){
- e.printStackTrace();
- throw new RuntimeException("pstm关闭失败!",e);
- }
- try{
- if (conn != null){
- conn.close();
- }
- }catch(SQLException e){
- e.printStackTrace();
- throw new RuntimeException("conn关闭失败!",e);
- }
- }
- //开启事务
- public static void beginTransaction(Connection conn){
- try {
- if(conn != null){
- conn.setAutoCommit(false);
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new RuntimeException("开启事务失败!",e);
- }
- }
- //提交事务
- public static void commit(Connection conn){
- try {
- if(conn != null){
- conn.commit();
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new RuntimeException("提交事务失败!",e);
- }
- }
- //回滚事务
- public static void rollback(Connection conn){
- try {
- if(conn != null){
- conn.rollback();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- throw new RuntimeException("回滚事务失败!",e);
- }
- }
- }
Transfer_transaction.java // 调用数据库文件
- package com.bjpowernode.jdbc.transfer;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import com.bjpowernode.jdbc.util.DBUtil;
- public class Transfer_transaction {
- public static void main(String[] args) {
- transfer("zs","ls",100);
- }
- /**
- *
- * @param from_act : 转出账户
- * @param to_act :转入账户
- * @param money : 转账金额
- */
- private static void transfer(String from_act, String to_act, double money) {
- /*if(转出账户的金额 >= 转账金额){
- 转出账户 - 转账金额
- 转入账户 + 转账金额
- }else{
- 提示余额不足
- }*/
- Connection conn = null;
- //转出账户的金额
- try {
- //事务是针对连接开启的
- conn = DBUtil.getConnection();
- //开启事务
- DBUtil.beginTransaction(conn);
- double from_money = getMoneyByAct(conn,from_act);
- if(from_money >= money){//转出账户的金额 >= 转账金额
- //转账
- //转出账户 - 转账金额
- updateMoneyByAct(conn,from_money-money,from_act);
- //转入账户的金额
- double to_money = getMoneyByAct(conn,to_act);
- //模拟异常
- // Integer.parseInt("abc");
- //转入账户+ 转账金额
- updateMoneyByAct(conn,to_money+money,to_act);
- //提交事务
- DBUtil.commit(conn);
- System.out.println("转账成功!");
- }else{//提示余额不足
- System.out.println("余额不足!");
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("转账失败!");
- //回滚事务
- DBUtil.rollback(conn);
- }finally{
- DBUtil.close(null, null, conn);
- }
- }
- /**
- * 通过账户修改账户金额
- *
- * @param money : 需要修改的金额
- * @param act : 账户名称
- */
- private static void updateMoneyByAct(Connection conn ,double money, String act) {
- // TODO Auto-generated method stub
- // Connection conn = null;
- PreparedStatement pstm = null;
- try {
- // conn = DBUtil.getConnection();
- String sql = "update t_account set money = ? where act_no = ?";
- pstm = conn.prepareStatement(sql);
- pstm.setDouble(1, money);
- pstm.setString(2, act);
- pstm.executeUpdate();
- } catch (Exception e) {
- // TODO: handle exception
- throw new RuntimeException("修改金额失败",e);
- }finally{
- DBUtil.close(null, pstm, null);
- }
- }
- /**
- * 通过账户查询账户金额
- * @param act
- * @return
- */
- private static double getMoneyByAct(Connection conn ,String act) {
- // Connection conn = null;
- PreparedStatement pstm = null;
- ResultSet rs = null;
- double from_money = 0;
- try {
- //获得连接
- // conn = DBUtil.getConnection();
- String sql = "select money from t_account where act_no = ?";
- //创建数据库操作对象
- pstm = conn.prepareStatement(sql);
- //为占位符号赋值
- pstm.setString(1, act);
- //执行sql
- rs = pstm.executeQuery();
- /*while(rs.next()){
- from_money = rs.getDouble("money");
- }
- if(rs.next()){
- from_money = rs.getDouble("money");
- }
- */
- from_money = rs.next()?rs.getDouble("money"):0;
- } catch (Exception e) {
- throw new RuntimeException("查询账户余额失败!",e);
- }finally{
- DBUtil.close(rs, pstm, null);
- }
- return from_money;
- }
- }
DBConfig.properties //数据库配置文件
- driver=com.mysql.jdbc.Driver
- url=jdbc\:mysql\://127.0.0.1\:3366/bjpowernode
- uname=root
- pwd=root
java连接数据库——JDBC连接数据库的更多相关文章
- Java开发JDBC连接数据库
Java开发JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含6个步骤: JDBC五部曲1.加载驱动2.获得链接3.获取statement对象 4.执行SQL语句5.产生resultset对 ...
- java开发JDBC连接数据库详解
JDBC连接数据库 好文一定要让大家看见 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机) ...
- Java中JDBC连接数据库代码和步骤详解总结
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Jav ...
- java开发JDBC连接数据库代码
JDBC连接数据库,创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 这通过java.lang.Class类的静态方法forName(String className)实 ...
- java中JDBC连接数据库操作的基本步骤
JDBC基本步骤 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lan ...
- 【Java】JDBC连接数据库
JDBC介绍 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...
- Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...
- java的jdbc连接数据库,读取表中数据
连接数据库操作步骤如下 架包 jar 建表 源码解析 1:架包 jar根据自己本版本选择正确jar包,本例采用maven 管理局,在pom.xml 中添加如下代码,自动下载架包 <depende ...
- JAVA中JDBC连接数据库
这里列举了JDBC连接Oracle . SQLServer .MySQL 三种 数据库 1.Oracle连接(导入classes12.jar 包) public static Connection g ...
随机推荐
- How to initialize a static const map in c++?
#include <map> using namespace std; struct A{ static map<int,int> create_map() { map< ...
- android:改动PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色
1.改动PagerTabStrip中的背景颜色 我们在布局中直接设置background属性就可以: <android.support.v4.view.ViewPager android:id= ...
- vim Diff,Easy,Read-Only 的区别
我用的是vim 7.4,在windows上面安装完 vim 之后会出现不同的vim图标,gVim ,vim gVim 是在windows下的Gui图形用户界面的的 vim (GUI Vim),支持wi ...
- 14.2.4 InnoDB Undo Logs
14.2.4 InnoDB Undo Logs : 一个Undo log (或者成为回滚段) 是一个存储区域 持有被活动事务修改的数据的copy. 如果另外的事务需要看原始的数据(作为一致性读操作的一 ...
- go iota
package main import ( "fmt" ) const ( a = 'A' b c = iota d ) func main() { fmt.Println(a) ...
- QT操作Excel(通过QAxObject使用了OLE,前提是本地安装了Excel)
新建QT GUI项目,在选择选项中勾选ActiveQT Container. #include <qaxobject.h> QAxObject *obj = new QAxObject(& ...
- Android开发之style属性和提前定义样式
摘要 Android平台定义的主题样式: android:theme="@android:style/Theme.Dialog" // 将一个Activity显示为对话框模式and ...
- maven使用.02.一些概念
在上一篇POST中,简要的介绍了一下maven的特点,优势,安装.并建立了一个简单地Hello world工程.这一篇POST中,将主要会介绍一下Maven的一些约定. pom.xml文件 Maven ...
- CentOS6-釋放ip重新分配,centos7 ifconifg没有ip
http://bbs.csdn.net/topics/390725823 系统win7 ,dhcp自动获取ip虚拟机是10.0 安装之后我装了ubuntu 选用 NAT网络, 刚装完我能上网 ,但是 ...
- delphi 文件的读取(二进制文件和文本文件)
http://blog.csdn.net/earbao/article/details/9174033