问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javaJDBC连接数据库

发布网友 发布时间:2022-04-21 18:13

我来回答

4个回答

懂视网 时间:2022-04-07 20:31

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")); //把字节流加载到集合类中,在内存中以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连接数据库

标签:

热心网友 时间:2022-04-07 17:39

我们知道Java中的jdbc是用来连接应用程序和数据系统的,本篇文章主要就来看看关于JDBC的实现和使用细节。主要包含以下几点内容:JDBC的基本知识(数据驱动程序)JDBC的连接配置使用JDBC增删改查JDBC的一些使用细节一、JDBC的基本知识。 我们用Java写的程序,无论是桌面应用程序还是web应用程序都是不能直接访问我们本机上的数据库系统的,这就需要使用驱动程序去构成两者之间的连接。像这样,我们的应用程序需要针对不同的数据库系统调用不同的驱动程序来连接操作数据库系统,但是对于不同的数据库系统,我们就需要学习他们各自提供的驱动程序接口的使用,还是比较麻烦的。并且程序一旦数据迁移,将导致关于数据操作的代码模块需要重写。于是sun公司为了简化Java对数据库的连接操作,定义了一套Java操作数据库的规范,JDBC(Java Database Connectivity)。从此程序员就可以使用纯Java代码连接和操作数据库了。仅供参考!

热心网友 时间:2022-04-07 18:57

应该是事务没有提交,在state.executeUpdate()后面加一句con.commit();提交事务追答那你就仔细核对一下你的Oracle数据库URL地址

URL应该这么写:
jdbc:oracle:thin:@localhost:1521:orcl

热心网友 时间:2022-04-07 20:32

23行把异常信息打印出来看看,看看到底是什么异常。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑docx怎么转换成word文档电脑上docx格式文件转换方法 电脑白屏是怎么回事啊。??? 电脑开机花屏渐渐地白屏了显示器突然白屏花屏的原因及解决方法_百度知 ... iphone录屏失败因为5823什么意思_iphone录屏失败提示5823代表什么意思... 软考中级:信息安全工程师 求大神解答打印机如何设置默认双面打印 如何更改打印机的打印格式? 经期同房月经没了会怀孕吗 iphone8p轻触解锁设置 宝沃bx5300公里多少油钱 java中使用JDBC连接数据库的步骤? 电脑开机后屏幕一直变换颜色重新开机又好了 电脑显示器的颜色不断的来回变换,该咋办? 甘肃的矿产等资源是怎样的? 我是平凉崆峒区的参加了甘肃10000名社保考试,考了... 我是甘肃的,我考了邵阳学院音乐。2011合格线192,... 甘肃考生,文化课443,编导专业统考成绩202,可以... 甘肃历史上的哪十大名人,多是名将与乱世枭雄? 甘肃礼县祁山乡西汉村三组202候菜花养老保险从哪年... 我国的国道中302、103等数字代表什么意思? 你好,我是今年甘肃播音主持考生,联考202,报考西... 202年甘肃省都有那些舞蹈类学校设有校考? 202O年度甘肃省兰州市申报技术标兵工作进度如何? 甘肃曝光了价格违法典型案例,这些案例都与什么有关? 202年甘肃中职考生能报考综合评价吗? 甘肃考生,美术专业202分,文化课374分,可以报考二... 甘肃2021艺术生,专业202,文化课预计425能报哪些学校 甘肃美术统考202分,还有必要继续校考吗? 202年甘肃省人事厅关于高级知识分子子女就业的相关... 甘肃省兰州市城关区铁路西村街道和政路39号第一单... 为什么我的电脑屏幕总是变色? JDBC连接数据库的步骤都有哪些? 宋亚轩能成为《王牌对王牌》的常驻嘉宾,凭借的是... 电脑屏幕一直闪红绿黄白灰不停? java中使用JDBC连接数据库的步骤是什么? 进入明星微信群二维码 为什么电脑关机后液晶显示屏还在不停地变颜色? java jdbc连接数据库 2021.9.12宋亚轩粉丝多少? 电脑屏幕不停的自动转换颜色是什么问题? java使用jdbc连接数据库问题 最近刚上楼,想问一下什么是时代少年团粉丝群的审... 为什么电脑关机后液晶显示屏还在不停地变颜色 JAVA-JDBC连接数据库一个问题:我采用通过事务提交... 宋亚轩有多少粉丝? 我的电脑待机时显示屏上各种颜色换来换去 老亮着... java jdbc连接oracle数据库步骤 宋亚轩pb是什么意思 如何使用JDBC连接数据库在java中 宋亚轩粉丝为什么叫海螺?