java中用事物控制语言调用数据库中的数据,以及调用存储过程或函数

定义一个工具类:

package com.etc.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Util {
    
   static {//静态代码块 引入oracle 连接驱动包
      try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
   } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   }
   
    public static Connection getCon(){ //定义一个静态方法与数据库连接
     Connection con=null;
    
     try {
   con =DriverManager.getConnection("jdbc:oracle:thin:@172.18.2.248:1521:leoorcl","bruce","bruce");
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
     return con;
    }
   
     public static void close(ResultSet rs,Statement st,Connection con){//定义一个静态方法关闭对应的操作
      
       if(rs == null){
           try {
     rs.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
         }
         if(st == null){
          try {
    st.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
        }
         if(con == null){
          try {
    con.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
        }
     }
    
    
     public static void close(PreparedStatement ps,Connection con){
      
       if(ps == null){
           try {
     ps.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
         }
      
       
         if(con == null){
          try {
    con.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
        }
     }
  
}

 

 

数据封装类:

package com.ect.entity;

public class UserEntity {
       
  private int name;
  private int money;
public int getName() {
 return name;
}
public void setName(int name) {
 this.name = name;
}
public int getMoney() {
 return money;
}
public void setMoney(int money) {
 this.money = money;
}
 
}

 

 

定义一个借口,里面是操作数据库的方法:

package com.etc.dao;

import java.util.List;

import com.ect.entity.UserEntity;

public interface IUserDao {  //定义一个userdao 结果
   
  public List<UserEntity> selectAll();//查询数据,返回值为数据封装类型的list
  public int insertItem(UserEntity user);//插入数据
}

 

定义一个类继承接口:

package com.ect.daoimpl;

import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.ect.entity.UserEntity;
import com.etc.dao.IUserDao;
import com.etc.util.Util;

public class UserDaoImpl implements IUserDao { //继承userdao借口,重写方法

 @Override
 public List<UserEntity> selectAll() {
    
    List<UserEntity> list = new ArrayList<UserEntity>();
    Connection con=null;
    Statement st = null;
    ResultSet rs =null;
  
    con=Util.getCon();
   
    try {
   st= con.createStatement();  //创建一个执行语句
   rs = st.executeQuery("select * from userr");
   while(rs.next()){
    
     UserEntity user = new UserEntity();
     user.setName(rs.getInt("name"));
     user.setMoney(rs.getInt("money"));
     list.add(user);
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
     Util.close(rs, st, con);
  
  return list;
 }

 public int insertItem(UserEntity user) {
    Connection con=null;
    PreparedStatement ps = null;
    int re=0;
    con=Util.getCon();
   
    try {
   con.setAutoCommit(false);
   ps = con.prepareStatement("insert into userr(name,money) values(?,?)");
   ps.setInt(1,user.getName());
   ps.setInt(2, user.getMoney());
      re = ps.executeUpdate();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  if(re>0){
   try {
    con.commit();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  } else {
   try {
    con.rollback();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
     Util.close(ps,con);
  
  return re;
 }

}

 

用单元测试测试 方法:

package com.etc.test;

import java.util.List;

import org.junit.Test;

import com.ect.daoimpl.UserDaoImpl;
import com.ect.entity.UserEntity;
import com.etc.dao.IUserDao;

public class testMain {

 @Test
 public void testSelect(){
   
  UserDaoImpl userImpl = new UserDaoImpl();
  List<UserEntity> userlist = userImpl.selectAll();
  for(UserEntity u:userlist){
   System.out.println("name:"+u.getName()+":money:"+u.getMoney());
  }
 }
 
 @Test
 public void testInsert(){
   
  UserDaoImpl userImpl = new UserDaoImpl();
  UserEntity user = new UserEntity();
  user.setName(100);
  user.setMoney(123456);
  int re = userImpl.insertItem(user);
  if(re>0){
   System.out.println("insert success");
  }else{
   System.out.println("insert faild");
  }
 }
}

 

调用存储过程和函数的代码:

package com.etc.test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class testProcedure {

 /**
  * @param args
  */
 public static void main(String[] args) {
  Connection con = null;//连接数据库类
  CallableStatement cs = null; //调用存储过程或者函数的执行容器
  ResultSet rs = null; //结果返回集
     try {
  Class.forName("oracle.jdbc.driver.OracleDriver");//引入oracle 连接驱动包
  //加载连接数据库的类
  con =DriverManager.getConnection("jdbc:oracle:thin:@172.18.2.248:1521:leoorcl","bruce","bruce");
     cs = con.prepareCall("{call mypro(?)}");//调用存储过程,参数为游标
     cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);//设置返回值类型  必须设置类型,此处为cursor 类型
     cs.execute();
     rs=(ResultSet)cs.getObject(1);//将第一个值返回到ResultSet中
     while(rs.next()){
      
      System.out.println(rs.getString("name")); //此处仅是测试
     }
     /**
      *  调 函数
      *  cs = con.prepareCall("{?=call myfunc()}");//调用无参的函数
      *   cs.registerOutParameter(1, oracle.jdbc.OracleTypes.INTERGER);//函数返回值类型
      *   cs.execute(); //执行语句
      *   int re = cs.setInt(1);//获取返回值
      *   System.out.println(re);
      */
     } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }finally{
    if(con==null){
     try {
    con.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
    }
 }
 }
/**
 *  数据库中procedure
 *   create or replace procedure mypro(myre out mypack.mycur)  is
     begin
    open myre for select * from userr;
    end mypro;
   
    数据库中package
     create or replace package mypack is
     type mycur is ref cursor;
     end mypack;

 */
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我了解了您的要求,我们开始回答您的问题。 在 MATLAB 生成 MQAM 信号,可以借助 `qammod` 函数来实现。下面是生成 MQAM 信号的 MATLAB 代码示例: ```matlab function [tx_signal, symbols] = gen_mqam_signal(M, num_symbols, energy_per_symbol) % 生成二进制数据,每个码元有 M 个取值 bits_per_symbol = log2(M); tx_bits = randi([0 1], [num_symbols*bits_per_symbol, 1]); % 用 qammod 生成 MQAM 符号序列 mod_order = sqrt(M); symbols = qammod(bin2dec(reshape(tx_bits, bits_per_symbol, num_symbols)).', mod_order, 'gray'); % 缩放每个符号的功率,使得每个符号的平均功率为 energy_per_symbol symbol_energy = mean(abs(symbols).^2); symbols = symbols * sqrt(energy_per_symbol / symbol_energy); % 将符号序列转化为时间域信号 tx_signal = ifft(symbols); end ``` 在主函数调用这个函数,可以使用下面的代码: ```matlab M = 16; % MQAM 信号调制阶数 num_symbols = 1024; % 生成的符号个数 energy_per_symbol = 1; % 每个符号的平均功率 [tx_signal, symbols] = gen_mqam_signal(M, num_symbols, energy_per_symbol); ``` 这样就可以生成一个长度为 `num_symbols` 的 MQAM 信号,其调制阶数为 `M`,每个符号的平均功率为 `energy_per_symbol`。生成的信号可以通过 `tx_signal` 返回。符号序列可以通过 `symbols` 返回,便于绘制星座图等显示操作。 希望这个回答能够解决您的问题。如果您有其他问题,请随时提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值