자바 에서 JDBC 는 Oacle 데이터 베 이 스 를 연결 하고 패키지 추가 삭제 검사,단일 조회,다 중 조회(최종 버 전)
8007 단어 Oacle 데이터베이스자바jdbc
Sql 의 시 계 는 다음 과 같 습 니 다.
username
password
balance
1.데이터베이스 조회 패 키 지 는 포장 의 삭제 와 검 사 를 실 현 했 고 여러 가지 조 회 를 실 현 했 습 니 다.그 중에서 세 가지 방법 은 증가,삭제,수정,단일 조회,여러 가지 조 회 를 실현 할 수 있 습 니 다.
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import AtmoPo.Rowmapper;
import AtmoPo.RowmapperAll;
// ,
public class JdbcTemplament {
//
public Connection getConn() {
Connection conn=null;
try {
//
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "123456");
} catch (ClassNotFoundException e) {
System.out.println(" !");
e.printStackTrace();
} catch (SQLException e) {
System.out.println(" !");
e.printStackTrace();
}
return conn;
}
//update() , sql ;
public void update (String sql,Object[] values) {
Connection conn=getConn();
PreparedStatement ps=null;
try {
ps=conn.prepareStatement(sql);
for(int i=0;i queryAll(String sql,Object[] values,RowmapperAll ra) {
Connection conn=getConn();
PreparedStatement ps=null;
List
2.인터페이스 연결,단일 조회 와 여러 개의 조회 가 의존 하 는 두 개의 인터페이스,단일 선택 또는 여러 개의 정보의 매 핑 실현
package AtmoPo;
import java.sql.ResultSet;
public interface Rowmapper {
// , rs ;
public Object rowMapper(ResultSet rs);
}
package AtmoPo;
import java.sql.ResultSet;
import java.util.List;
public interface RowmapperAll {
public List rowMapperAll(ResultSet rs);
}
3.Atm 맵
package AtmoPo;
public class Atm {
private String username;
private String password;
private int balance;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
@Override
public String toString() {
return "Atm [username=" + username + ", password=" + password + ", balance=" + balance + "]";
}
}
4.데이터 링크 층,상기 두 개의 인 터 페 이 스 를 실현
package ATMDao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import AtmoPo.Atm;
import AtmoPo.Rowmapper;
import AtmoPo.RowmapperAll;
import util.JdbcTemplament;
public class AtmDao implements Rowmapper,RowmapperAll {
//
public void cunkuanDao(String username,int money) {
JdbcTemplament jtl=new JdbcTemplament();
Atm atm=load(username);
atm.setBalance(atm.getBalance()+money);
String sql1="update tb_atm set balance=? where username=?";
jtl.update(sql1, new Object[] {atm.getBalance(),atm.getUsername()});
}
//
public void quqianDao(String username,int money) {
JdbcTemplament jtl=new JdbcTemplament();
Atm atm=load(username);
if(atm.getBalance()>money) {
atm.setBalance(atm.getBalance()-money);
String sql1="update tb_atm set balance=? where username=?";
jtl.update(sql1, new Object[] {atm.getBalance(),atm.getUsername()});
}else {
System.out.println(" !");
}
}
//
public void zhuanzhangDao(String username,int money,String rusername) {
JdbcTemplament jtl=new JdbcTemplament();
Atm atm=load(username);
if(atm.getBalance()>money) {
atm.setBalance(atm.getBalance()-money);
String sql1="update tb_atm set balance=? where username=?";
jtl.update(sql1, new Object[] {atm.getBalance(),atm.getUsername()});
//
Atm atm1=load(rusername);
atm1.setBalance(atm1.getBalance()+money);
String sql3="update tb_atm set balance=? where username=?";
jtl.update(sql3, new Object[] {atm1.getBalance(),atm1.getUsername()});
}else {
System.out.println(" !");
}
}
//
public int chaxunyue(String username) {
Atm atm=load(username);
return atm.getBalance();
}
//
public Atm load(String username) {
JdbcTemplament jtl=new JdbcTemplament();
String sql="select * from tb_atm where username=?";
Atm atm=(Atm)jtl.load(sql, new Object[] {username}, this);
return atm;
}
//
public List queryAllDao(int start,int end){
JdbcTemplament jtl=new JdbcTemplament();
String sql="Select * from(select rownum r ,tb_atm.* from tb_atm)t where t.r between ? and ?";
List list=jtl.queryAll(sql, new Object[] {start,end}, this);
return list;
}
@Override
public Object rowMapper(ResultSet rs) {
Atm atm=null;
try {
if(rs.next()) {
atm=new Atm();
atm.setUsername(rs.getString("username"));
atm.setPassword(rs.getString("pasword"));
atm.setBalance(rs.getInt("balance"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return atm;
}
@Override
public List rowMapperAll(ResultSet rs) {
List list= new ArrayList();
Atm atm=null;
try {
while(rs.next()) {
atm=new Atm();
atm.setUsername(rs.getString("username"));
atm.setPassword(rs.getString("pasword"));
atm.setBalance(rs.getInt("balance"));
list.add(atm);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
5.업무 층
package Service;
import ATMDao.AtmDao;
import AtmoPo.Atm;
public class AtmService {
public void cunkuan(String username,int money) {
AtmDao ad=new AtmDao();
ad.cunkuanDao(username, money);
}
public void zhuanzhang(String username,int money,String rusername) {
AtmDao ad=new AtmDao();
ad.zhuanzhangDao(username, money, rusername);
}
public void qukuan(String username,int money) {
AtmDao ad=new AtmDao();
ad.quqianDao(username, money);
}
public int yue(String username) {
AtmDao ad=new AtmDao();
return ad.chaxunyue(username);
}
public void queryAll(int start,int end){
AtmDao ad=new AtmDao();
for(Object arr: ad.queryAllDao(start, end)){
System.out.println((Atm)arr);
}
}
}
6.테스트
package test;
import Service.AtmService;
public class Test {
public static void main(String[] args) {
AtmService as=new AtmService();
System.out.println(" :"+as.yue(" "));
as.cunkuan(" ", 10000);
System.out.println(" :"+as.yue(" "));
System.out.println(" :"+as.yue(" "));
as.zhuanzhang(" ", 2000, " ");
System.out.println(" :"+as.yue(" "));
System.out.println(" :"+as.yue(" "));
as.qukuan(" ", 1000);
System.out.println(" :"+as.yue(" "));
as.queryAll(1, 2);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【eclipse】같은 파일을 2개 열고 싶다【에디터의 분할】「이런 것은 다른 클래스로 나누어야 한다!」라든지 있다고는 생각합니다만. 실제로 실무 속에서 프로그램을 쓰고 있으면, 이런 소스에 눈에 걸리는 일도 적지 않을까···. 그건 그렇고, 내 노트북에서 이렇게 보입니다 네...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.