* JDBC
- 자바에서 DB연동하는 것
- 데이터베이스를 설치하고 (오라클, My-SQL)
- 자바와 DB를 연결시켜야 한다->드라이버 필요
[MySQL 드라이버 다운]
- http://www.mysql.com -> Downloads
-> Mysql Connectors -> Connector/J
-> mysql-connector-java-5.1.18.zip 다운받은 후 압축풀기
- My-SQL서버 시작
D:\ERPJava_04\mysql\bin\mysqld.exe 실행
My-Sql 서버가 시작된는지 확인하려면
작업관리자->프로세스 에서 확인 가능
- My-SQL서버 종료
작업관리자->프로세스 에서 종료
- D:\ERPJava_04\mysql\bin>mysql -u root -p 1234
- mysql>show databases; --데이터베이스 보기
- mysql>use erpjavadb; --사용DB 변경하기
- mysql>exit; --mysql 빠져 나오기
* 이클립스에서 My-SQL 드라이버 지정--------------------
- 이클립스 -> Project -> Properties -> Java Build Path
-> Libraries -> Add External Jars...
-> 'mysql-connector-java-5.1.18-bin.jar' 지정
* 성적테이블 작성------------------------------------------
create table tb_sungjuk(
sno int NOT NULL AUTO_INCREMENT PRIMARY KEY
,uname varchar(20) not null
,kor tinyint default 0
,eng tinyint default 0
,mat tinyint default 0
,aver tinyint null
,address varchar(10) null
,regdt DATETIME NOT NULL
);
int 정수형
tinyint 작은 정수형
DATETIME 날짜형
AUTO_INCREMENT 자동으로 일련번호 부여
PRIMARY KEY 기본키, 중복되는 값이 절대로 올수 없다
now() 현재 시스템의 날짜값
insert into tb_sungjuk(uname,kor,eng,mat,address,regdt)
values ('홍길동',70,80,90,'안양',now());
-------------------------------------------------------INSERT
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class InsertTable {
public static void main(String[] args) {
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String jdbc = "org.gjt.mm.mysql.Driver";
String user = "root";
String password = "1234";
Connection con=null;
Statement stmt=null;
try{
Class.forName(jdbc);
con=DriverManager.getConnection(url, user, password);
stmt=con.createStatement();
String sql="INSERT INTO tb_sungjuk";
sql+=" (uname,kor,eng,mat,address,regdt)";
sql+=" VALUES('홍길동',90,90,80,'안양',now())";
int rec=stmt.executeUpdate(sql);//쿼리문이 실행
System.out.println("레코드 "+rec+"개 추가!!");
}catch(Exception e){
System.out.println("SQLException: " + e.getMessage());
}finally{
try{
if ( stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if ( con != null){ con.close(); }
}catch(Exception e){}
}//end try
}
}
-------------------------------------------------------UPDATE
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class UpdateTable {
public static void main(String[] args) {
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String driver = "org.gjt.mm.mysql.Driver";
String user = "root";
String password = "1234";
Connection con=null;
Statement stmt=null;
try{
Class.forName(driver);
con=DriverManager.getConnection(url,user,password);
String sql="UPDATE tb_sungjuk";
sql=sql+" SET aver=(kor+eng+mat)/3 ";
System.out.print(sql);
//DB에 가서 새롭게 명령어(쿼리문)을 인식함
stmt=con.createStatement();
stmt.executeUpdate(sql);
//select -> executeQuery()
//나머지(create,insert,update,delete)->executeUpdate();
}catch(Exception e){
System.out.println("SQLException: " + e.getMessage());
}finally{
try{
if ( stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if ( con != null){ con.close(); }
}catch(Exception e){}
}//end try
}
}
-------------------------------------------------------DELETE
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class DeleteTable {
public static void main(String[] args) {
String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";
Connection con=null;
Statement stmt=null;
try{
Class.forName(driver);
con=DriverManager.getConnection(url,user,password);
String sql="DELETE FROM tb_sungjuk WHERE sno=1";
stmt=con.createStatement();
stmt.executeUpdate(sql);//쿼리문 실행
}catch(Exception e){
System.out.println("SQLException: " + e.getMessage());
}finally{
try{
if ( stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if ( con != null){ con.close(); }
}catch(Exception e){}
}//end try
}
}
-------------------------------------------------------CREATE
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class CreateTable {
public static void main(String[] args) {
String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";
Connection con=null;
Statement stmt=null;
try{
Class.forName(driver);//mysql 연결통로 지정. 드라이버로딩
con=DriverManager.getConnection(url,user,password);
String sql="CREATE TABLE tb_sungjuk(";
sql=sql+" sno int NOT NULL AUTO_INCREMENT PRIMARY KEY";
sql=sql+",uname VARCHAR(20) not null";
sql=sql+",kor tinyint default 0";
sql=sql+",eng tinyint default 0";
sql=sql+",mat tinyint default 0";
sql=sql+",aver tinyint null";
sql=sql+",address varchar(10) null";
sql=sql+",regdt DATETIME NOT NULL";
sql=sql+")";
//sql+="~~~"
//System.out.print(sql);
stmt=con.createStatement();//새로운명령어라고 인식
stmt.executeUpdate(sql);//쿼리문 실행
//실행 executeUpdate->create,insert,delete,update,drop
//실행 executeQuery->select
}catch(Exception e){
System.out.print(e.getMessage());
}finally{
try{
if ( stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if ( con != null){ con.close(); }
}catch(Exception e){}
}//end try
}
}
-------------------------------------------------------SELECT
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class SelectRecOne {
public static void main(String[] args) {
String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName(driver);
con=DriverManager.getConnection(url,user,password);
String sql="SELECT * FROM tb_sungjuk order by sno";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);//select결과값 저장
//rs.next() 첫번째 레코드를 가르킴
//만일 가르키는 레코드가 있으면 true반환
//없으면 false반환
if(rs.next())
{
System.out.print(rs.getInt(1)+" ");//1번째 칼럼 sno
System.out.print(rs.getString(2)+" ");//uname
System.out.print(rs.getInt(3)+" ");//kor
System.out.print(rs.getInt(4)+" ");//eng
System.out.print(rs.getInt(5)+" ");//mat
System.out.print(rs.getInt(6)+" ");//aver
System.out.print(rs.getString(7)+" ");//address
System.out.print(rs.getString(8)+" ");//regdt
System.out.println();
System.out.print(rs.getInt("sno")+" ");
System.out.print(rs.getString("uname")+" ");//uname
System.out.print(rs.getInt("kor")+" ");//kor
System.out.print(rs.getInt("eng")+" ");//eng
System.out.print(rs.getInt("mat")+" ");//mat
System.out.print(rs.getInt("aver")+" ");//aver
System.out.print(rs.getString("address")+" ");//address
System.out.print(rs.getString("regdt")+" ");//regdt
}
else
{
System.out.print("조회 행 없음!!");
}
}catch(Exception e){
System.out.print(e.getMessage());
}finally{
try{
if ( stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if ( con != null){ con.close(); }
}catch(Exception e){}
}//end try
}
}
-------------------------------------------------------SELECT
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class SelectRec {
public static void main(String[] args) {
String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName(driver);
con=DriverManager.getConnection(url,user,password);
String sql="SELECT * FROM tb_sungjuk order by sno";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);//select결과값 저장
while(rs.next())
{
System.out.print(rs.getInt("sno")+" ");
System.out.print(rs.getString("uname")+" ");//uname
System.out.print(rs.getInt("kor")+" ");//kor
System.out.print(rs.getInt("eng")+" ");//eng
System.out.print(rs.getInt("mat")+" ");//mat
System.out.print(rs.getInt("aver")+" ");//aver
System.out.print(rs.getString("address")+" ");//address
System.out.print(rs.getString("regdt")+" ");//regdt
System.out.println();
}
}catch(Exception e){
System.out.print(e.getMessage());
}finally{
try{
if ( rs != null){ rs.close(); }
}catch(Exception e){}
try{
if ( stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if ( con != null){ con.close(); }
}catch(Exception e){}
}//end try
}
}
-----------------------------------------------------[문제]
문)aver들의 평균보다 잘한 레코드 출력
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class SelectEx1 {
public static void main(String[] args) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName("org.gjt.mm.mysql.Driver");
String url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=euckr";
String user="root";
String password="1234";
con=DriverManager.getConnection(url,user,password);
stmt=con.createStatement();
//문)aver들의 평균보다 잘한 레코드 출력
String sql="";
sql=sql+" SELECT * FROM tb_sungjuk ";
sql=sql+" WHERE aver>= ";
sql=sql+" (SELECT AVG(aver) FROM tb_sungjuk) ";
rs=stmt.executeQuery(sql);
while(rs.next()){
System.out.print(rs.getInt("sno")+" ");
System.out.print(rs.getString("uname")+" ");
System.out.print(rs.getInt("kor")+" ");
System.out.print(rs.getInt("eng")+" ");
System.out.print(rs.getInt("mat")+" ");
System.out.print(rs.getInt("aver")+" ");
System.out.print(rs.getString("address")+" ");
System.out.print(rs.getString("regdt").substring(0,10)+" ");
System.out.println();
}
}
catch(Exception e){
System.out.println(e);
}
finally{
try{
if (rs != null){ rs.close(); }
}catch(Exception e){}
try{
if (stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if (con != null){ con.close(); }
}catch(Exception e){}
}
}
}
-----------------------------------------------------[문제]
문)각 주소별 학생의 인원수 내림차순으로 출력
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class SelectEx2 {
public static void main(String[] args) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName("org.gjt.mm.mysql.Driver");
String url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=euckr";
String user="root";
String password="1234";
con=DriverManager.getConnection(url,user,password);
stmt=con.createStatement();
//문)aver들의 평균보다 잘한 레코드 출력
String sql="";
sql=sql+" SELECT address,count(*) as cnt ";
sql=sql+" FROM tb_sungjuk ";
sql=sql+" GROUP BY address ";
sql=sql+" ORDER BY count(*) DESC ";
rs=stmt.executeQuery(sql);
while(rs.next()){
System.out.print(rs.getString("address")+" ");
System.out.print(rs.getInt("cnt")+" ");
System.out.println();
}
}
catch(Exception e){
System.out.println(e);
}
finally{
try{
if (rs != null){ rs.close(); }
}catch(Exception e){}
try{
if (stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if (con != null){ con.close(); }
}catch(Exception e){}
}
}
}
-----------------------------------------------------[문제]
문)sno 역순으로 정렬한뒤 위에서부터 5개 레코드만 출력
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class SelectEx3 {
public static void main(String[] args) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName("org.gjt.mm.mysql.Driver");
String url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=euckr";
String user="root";
String password="1234";
con=DriverManager.getConnection(url,user,password);
stmt=con.createStatement();
//문)
String sql="";
sql=sql+" SELECT * ";
sql=sql+" FROM tb_sungjuk ";
sql=sql+" ORDER BY sno DESC limit 0,5 ";
rs=stmt.executeQuery(sql);
while(rs.next()){
System.out.print(rs.getInt("sno")+" ");
System.out.print(rs.getString("uname")+" ");
System.out.print(rs.getInt("kor")+" ");
System.out.print(rs.getInt("eng")+" ");
System.out.print(rs.getInt("mat")+" ");
System.out.print(rs.getInt("aver")+" ");
System.out.print(rs.getString("address")+" ");
System.out.print(rs.getString("regdt").substring(0,10)+" ");
System.out.println();
}
}
catch(Exception e){
System.out.println(e);
}
finally{
try{
if (rs != null){ rs.close(); }
}catch(Exception e){}
try{
if (stmt != null){ stmt.close(); }
}catch(Exception e){}
try{
if (con != null){ con.close(); }
}catch(Exception e){}
}
}
}
'..열심히 공부하세.. > JAVA 문법' 카테고리의 다른 글
[예제] set, map 예제 (0) | 2012.06.26 |
---|---|
[Vector 예제] Buyer - 반품 refund() 메소드 (0) | 2012.06.26 |
[34] 제네릭 Generics (0) | 2012.05.08 |
[33] Java Collections Framework (0) | 2012.05.08 |
[32] Object 클래스 (0) | 2012.05.04 |