SQLite
http://www.sqlite.org/ 접속. Download 탭에가서, 윈도우즈 용인 Precompiled Binaries for Windows 에서 sqlite-shell-win32-x86-3080403.zip(289.42 KiB) 다운.
압축풀고, C:에 SqliteRoom을 만들고 압축푼, sqlite3.exe를 넣음.
커맨드창에가서 SqliteRoom으로 이동해서 sqlite3 하면 sqlite가 실행됨. .quit하면 종료.
sqlite3 test.db 입력하면 아직 test.db가 만들어진게 아니라, 테이블을 하나만들면 test.db가 만들어짐.
어제와 같은 것을 만들어보면
CREATE TABLE helloworld 엔터
(
id integer primary key,
pwd varchar(20) NOT NULL
);
을 입력한다.
.schema helloworld 를 입력하면 방금 입력한 소스를 다보여준다.
INSERT INTO helloworld VALUES(1, '1234');
INSERT INTO helloworld(pwd) VALUES('3333');
INSERT INTO helloworld(pwd) VALUES('P@$$WOrd');
//아이디는 자동으로 1씩 증가하기 때문에 주지않아도된다.
.show를 치면 현재 sqlite의 세팅된 환경설정을 보여준다.
.mode column 을 쳐서 모드를 바꾸고
.headers on 을 쳐서 세팅바꾸면.
그리고 select * from helloworld; 를 치면 보기 편하게 바뀐것을 볼 수 있다.
.quit로 빠져나온다.
구글에서 sqlite database browser 를 쳐서 가장 위에 사이트에 들어가서 녹색 다운로드 버튼 클릭.
다운받은 것을 알집을 풀고 폴더의 이름을 Sqlite Database Browser 로 이름을 바꾼다. 폴더를 C:\ProgramFiles 에 넣는다.
그리고 SQLite Database Browser 를 실행시키고 아까 만든 test.db를 오픈하면 내용을 볼 수 있음. 장점은 커맨드명령을 싫어한는 사람을 위한.
이클립스 sql explorer - new profile 에가서 설정.
구글에서 sqlite jdbc driver 검색. 제일 위 사이트 클릭. downloads 탭 선택. sqlite-jdbc4-3.8.2-SNAPSHOT.jar 다운.
받은 jar파일을 C:\SqliteRoom 에 넣어줌. 그리고 add/edit 들어가서 sqlite-edit 눌러서 방금 jar파일을 add jars해서 추가해주고 리스트드라이버 잡아주고
URL을 jdbc:sqlite:C:/sqliteroom/test.db로 바꿔줌. ok해서 Name을 Sqlite3해주고 User~~~체크, Auto Commit 체크 ~~ ok.
연결시켜주고 select * from helloworld; 하면 안되네.-> 오른쪽에 Tables에 helloworld 눌러서 다시 해주면 된다.
다시 sql editor 창에서
CREATE TABLE telephone
(
telnum CHAR(8) PRIMARY KEY,
gubun INTEGER NOT NULL,
irum VARCHAR(20) NOT NULL,
howmany INTEGER NOT NULL,
gibon INTEGER,
fee INTEGER,
tax INTEGER,
total INTEGER
);
run 하고 오른쪽에 Tables를 refresh하면 telephone table이 들어온 것을 볼 수 있다.
이클립스의 전화요금 관리프로그램의 우측버튼 built path-configuration build path 들어가서libraries 탭에서 add External JARs에서 sqliteroom의 jar파일을 선택해준다.
main에서
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//2. Driver Loading
try {
Class.forName("org.sqlite.JDBC");
System.out.println("Loading Success");
} catch (ClassNotFoundException e) {
System.out.println("Class Not Found");
}
//3. Connection
Connection conn = null;
String str = "jdbc:sqlite:C:/sqliteroom/test.db";
try{
conn = DriverManager.getConnection(str);
System.out.println("Connection Success");
}catch(SQLException ex){
System.out.println("Connection failure");
}
}
}
이렇게 해서 실행 시켜주어 connection 까지 완료한다.
dbinf.properties를 프로젝트에 넣어주고 내용을
DBDRIVER=org.sqlite.JDBC
DBURL=jdbc:sqlite:C:/SqliteRoom/test.db
로 바꿔줌.
다시 main을
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("<<전화요금관리프로그램>>");
Scanner scan = new Scanner(System.in);
Main main = new Main();
int choice = 0;
while(true){
choice = main.showMenu(scan);
if(choice == 4) break;
switch(choice){
case 1 : Input input = new Input(scan); input.input(); break;
case 2 : Output output = new Output(); break;
case 3 : Search search = new Search(scan); search.search(); break;
}
}
System.out.println("Program is over...");
}
int showMenu(Scanner scan){
System.out.println("1:입력, 2:출력, 3:검색, 4:종료");
System.out.print(">> ");
return scan.nextInt();
}
}
이렇게 바꿔주고,
DBConnection도
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.util.Properties;
public class DBConnection{
private Properties info = null;
private Connection conn = null;
public DBConnection(){
info = new Properties();
try{
info.load(new FileInputStream("dbinfo.properties"));
}catch(FileNotFoundException ex){ ex.printStackTrace();
}catch(IOException ex){ ex.printStackTrace(); }
}
public void loadDriver(){
try{
Class.forName(info.getProperty("DBDRIVER"));
}catch(ClassNotFoundException ex){
System.out.println("Class Not Found");
}
}
public void setConnection(){
String url = info.getProperty("DBURL");
try{
conn = java.sql.DriverManager.getConnection(url);
}catch(java.sql.SQLException ex){
System.out.println("Cannot Connect Access");
}
}
public Connection getConnection(){
if(this.conn != null) return this.conn;
else return null;
}
}
이렇게 바꿔줌(바꿔준건 dbinf.properties의 경로밖에없음. 그냥 자바프로젝트에 넣어주어서)
실행하면 잘됨. 몇명 입력하고 Sqlite Database Browser로 확인하면 입력된 것을 볼 수 있다.
전화요금관리프로그램에서 delete만 추가된 버전을 만들면(수정한 것만 적음)
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
/* //2. Driver Loading
try {
Class.forName("org.sqlite.JDBC");
System.out.println("Loading Success");
} catch (ClassNotFoundException e) {
System.out.println("Class Not Found");
}
//3. Connection
Connection conn = null;
String str = "jdbc:sqlite:C:/sqliteroom/test.db";
try{
conn = DriverManager.getConnection(str);
System.out.println("Connection Success");
}catch(SQLException ex){
System.out.println("Connection failure");
}
//4. Statement 객체 생성
Statement stmt = null;
try{
stmt = conn.createStatement();
//5. Query 실행
StringBuffer sb = new StringBuffer();
sb.append("CREATE TABLE telephone(");
sb.append("telnum CHAR(8) PRIMARY KEY, ");
sb.append("gubun INTEGER NOT NULL,");
sb.append("irum VARCHAR(20) NOT NULL,");
sb.append("howmany INTEGER NOT NULL,");
sb.append("gibon INTEGER,");
sb.append("fee INTEGER, ");
sb.append("tax INTEGER, ");
sb.append("total INTEGER)");
stmt.executeUpdate(sb.toString());
System.out.println("Table Creation Success");
}catch(SQLException ex){
ex.printStackTrace();
}
try{
if(stmt != null) stmt.close();
if(conn != null) conn.close();
}catch(SQLException ex){
ex.printStackTrace();
}*/
System.out.println("<<전화요금관리프로그램>>");
Scanner scan = new Scanner(System.in);
Main main = new Main();
int choice = 0;
while(true){
choice = main.showMenu(scan);
if(choice == 6) break;
switch(choice){
case 1 : Input input = new Input(scan); input.input(); break;
case 2 : Output output = new Output(); break;
case 3 : Search search = new Search(scan); search.search(); break;
case 4 : Delete delete = new Delete(scan); delete.delete(); break;
//case 5 :
}
}
System.out.println("Program is over...");
}
int showMenu(Scanner scan){
System.out.println("1:입력, 2:출력, 3:검색, 4:삭제, 5:수정, 6:종료");
System.out.print(">> ");
return scan.nextInt();
}
}
import java.util.Scanner;
import java.util.Vector;
public class Delete {
private Scanner scan;
Delete(Scanner scan){
this.scan = scan;
}
void delete(){
System.out.print("1.이름으로 삭제, 2. 전화번호로 삭제 : ");
int choice = this.scan.nextInt();
this.scan.nextLine();
String sql = null;
if(choice == 1){ //이름으로 삭제
System.out.print("이름 : ");
String name = scan.nextLine();
sql = "DELETE FROM telephone WHERE irum = '" + name + "'";
}else if(choice == 2){ //전화번호로 삭제
System.out.print("전화번호 : ");
String telnum = scan.nextLine();
sql = "DELETE FROM telephone WHERE telnum = '" + telnum + "'";
}
CustomerController.delete(sql);
}
}
import java.sql.Connection;
import java.util.Vector;
public class CustomerController {
public static void delete(String sql){
DBConnection db = new DBConnection();
db.loadDriver();
db.setConnection();
Connection conn = db.getConnection();
CustomerDAO.delete(conn, sql);
DBClose.close(conn);
}
public static Vector<CustomerVO> search(String sql){
DBConnection db = new DBConnection();
db.loadDriver();
db.setConnection();
Connection conn = db.getConnection();
Vector<CustomerVO> vector = CustomerDAO.search(conn, sql);
DBClose.close(conn);
return vector;
}
public static void insert(CustomerVO c){
DBConnection db = new DBConnection();
db.loadDriver();
db.setConnection();
Connection conn = db.getConnection();
CustomerDAO.insert(conn, c);
DBClose.close(conn);
}
public static Vector<CustomerVO> select(){
DBConnection db = new DBConnection();
db.loadDriver();
db.setConnection();
Connection conn = db.getConnection();
Vector<CustomerVO> vector = CustomerDAO.select(conn);
DBClose.close(conn);
return vector;
}
}
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
public class CustomerDAO {
public static void delete(Connection conn, String sql){
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt.executeUpdate(sql);
System.out.println("Delete Success");
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Vector<CustomerVO> search(Connection conn, String sql){
Vector<CustomerVO> vector = null;
Statement stmt = null;
ResultSet rs = null;
try{
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if(rs.next()){ //있다면
vector = new Vector<CustomerVO>(1,1); //동명이인이 있을 수도있어 (1) 대신 (1,1)
do{
CustomerVO c = new CustomerVO();
c.setGubun(rs.getInt("gubun"));
c.setTelnum(rs.getString("telnum"));
c.setIrum(rs.getString("irum"));
c.setGibon(rs.getInt("gibon"));
c.setFee(rs.getInt("fee"));
c.setTax(rs.getInt("tax"));
c.setTotal(rs.getInt("total"));
vector.addElement(c);
}while(rs.next());
}
rs.close();
stmt.close();
}catch(SQLException ex){
ex.printStackTrace();
}
return vector;
}
public static Vector<CustomerVO> select(Connection conn){
Statement stmt = null;
ResultSet rs = null;
Vector<CustomerVO> vector = new Vector<CustomerVO>(1,1);
try {
stmt = conn.createStatement();
String sql = "SELECT * FROM Telephone";
rs = stmt.executeQuery(sql);
while(rs.next()){
CustomerVO c = new CustomerVO();
c.setGubun(rs.getInt("gubun"));
c.setTelnum(rs.getString("telnum"));
c.setIrum(rs.getString("irum"));
c.setGibon(rs.getInt("gibon"));
c.setFee(rs.getInt("fee"));
c.setTax(rs.getInt("tax"));
c.setTotal(rs.getInt("total"));
vector.addElement(c);
}
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
return vector;
}
public static void insert(Connection conn, CustomerVO c){
Statement stmt = null;
try {
stmt = conn.createStatement();
StringBuffer sb = new StringBuffer("INSERT INTO Telephone ");
sb.append("VALUES('" + c.getTelnum() + "'," + c.getGubun());
sb.append(",'" + c.getIrum() + "'," + c.getHowmany());
sb.append("," + c.getGibon() + "," + c.getFee() + "," + c.getTax());
sb.append("," + c.getTotal() + ")");
//System.out.println(sb.toString());
stmt.executeUpdate(sb.toString());
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
리눅스에서 sqlite3설치.
버츄얼 우분투를 켜서 sudo apt-get update 캐시업데이트.
sudo apt-get install sqlite3 libsqlite3-dev 해서 설치.
mkdir SqliteRoom으로 폴더하나 만들어주고 SqliteRoom 폴더안으로 들어가서 sqlite3 test.db 를 하면 테이블을 입력하면 test.db가 만들어질 것이다.
SQLite 끝.
=========================================================================
Server
1. Machine 이 서버.
2. OS 가 서버.
3. Program 이 서버
4. Server Service Start
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
MYSQL 시작.
윈도우즈에서 http://www.mysql.com/ 접속.
Download 탭에서 MySQL Community Edition의 다운로드로 이동.
MySQL Community Server (GPL) 선택.
밑에 쪽의 Windows(x86,64-bit), MySQL INstaller MSI 다운로드 선택.
Windows (x86, 32-bit), MSI Installer 5.6.17 234.7M 다운로드. 누르면 로그인 사인업 등이 잇는데 밑에 no thanks 클릭하면 다운로드됨.
다시 MySQL Community Edition의 다운로드로 이동 해서
MySQL Workbench (GPL) 다운로드 선택 후 Windows (x86, 32-bit), MSI Installer 6.1.4 30.0M 다운로드 클릭. no thanks까지
다시 전으로 가서 MySQL Connectors 선택하고 Connector/J 선택. Windows (x86, 32-bit), MSI Installer 5.1.30 6.1M 다운로드. no thanks까지
http://www.sqlgate.com/ 접속. Download 탭이동.
SQLGate for MySQL Developer 3.3.1.0 04/01/2014 11.7 M 다운로드.
그리고 다운받은 mysql-installer-community-5.6.17.0.msi 를 설치.
Install누르고 next, skip후 next 선택. Developer Default 선택. 나머지는 안건드리고 next. 그리고 기본설정대로 하고 execute.
동의하고 계속 install. 다 되면 next. 그리고 execute(보면 connector/j와 mysql Workbench 가 들어있는 것을 볼 수 있다. 괜히 깔았넹)
next, next, port number가 3306번인데 아래 파이어월을 열어준다에 체크가되어있다. 마지막에 show advanced option 체크 next.
MySQL Root Password 는 javamysql 을 해줌. next.
Windows Service Name은 두고 Start the MySQL Server at System Startup 체크 해제. next. 바로 next. next. next.
star MySQL Workbench after Setup 체크해제. finish.
실행시키는 첫번째 방법은 관리자권한으로 도스창열어줌. net start mysql56 시작. net stop mysql56 스탑.
두번째는 제어판에가서 관리도구가서 services 에서 MySQL56을 start or stop. 더블클릭해서 들어가면 Startup type에 Manual로 바꿔줌(부팅할때 자동으로 안올라오게 하기위해)
환경변수설정창에서 Path를 보면 MySQL이 올라온것을 볼 수 있다.
그리고 환경변수 설정창에서 Systme variables에서 new를 선택.
name = MYSQL_HOME, values = C:\Program Files\MySQL\MySQL Server 5.6 로 설정.
그리고 Path에서 마지막에 %MYSQL_HOME%\bin 를 추가해줌.
일반 커맨드창을 열어서 set path해서 설정해줌.
그리고 mysql -h localhost -u root -p 하고 비번 javamysql 치면 mysql로 접속됨.
show databases; 를치면 기본적으로 설치된 데이터베이스를 볼 수 있다.
use world 를 치면 데이터베이스가 바뀐다.
show tables;
desc city;
use test
show tables;
DESC mysql.user;
select host, user, password from mysql.user; //아무리 관리자라도 패스워드는 볼 수 없음.
exit //종료
MySQL Workbench 실행.
local instance를 누르고 비번 javamysql을 누르면 들어가짐.
다시 관리자 명령프롬프트 접속. mysql -u root -p 엔터 비번쓰고
use mysql 엔터
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'javamysql'; @뒤는 클라이언트 머신을 얘기하는거임.
flush privileges; 엔터
위와 같이 설정하면 MySQL Workbench에서 Database 탭에서 connect to database 해서 다른 컴퓨터에 접근가능.(안되면 처음 홈화면에서 +해서 접속하면 됨)
명령프롬프트에서 접속할 때는 mysql -h 아이피or컴퓨터이름 -u root -p 로 다른컴퓨터로 접속가능.
아까 받은 SQLGateforMySQLDev.exe 설치.
호스트 localhost, 사용자 root, 암호 javamysql, 암호저장체크, 데이터베이스 mysql(접근할데이터베이스), 문자집합 utf8, 날짜형식 default. 접속테스트 누르고 접속.
이클립스 접속 해서 sql explorer 에서 new profile 들어가서 add/edit driver에서 mysql drivers 을 edit해서
extra class path 에서 add JARs를 C:\Program Files\MySQL\Connector J 5.1.29의 mysql-conn~~~~.jar파일 선택.
list driver눌러서 driver class name을 com.mysql.jdbc.Driver 선택.
Example URL은 jdbc:mysql://localhost:3306/test로 해줌.(자기것에 3306포트에 아무것도 없는 test를 지정) . ok. ok
Name은 MySQL 5.6 , Driver는 MySQL Driver
autoLogon선택해서 user는 root, password는 javamysql 하고 autocommit 하고 ok.
커넥트하고
select * FROM world.City
where countrycode = 'KOR';
이렇게 해보던지, 아니면 우측 위에 test를 world로 바꿔서 검색을 하던지.
하면 결과값볼수 있고.
다시 전화요금관리프로그램으로 이동.
build Path-configuration buildPath에 들어가서 libraries 탭에서 external jars에서 C:\Program Files\MySQL\Connector J 5.1.29 에서 mysql-conn~~~~.jar파일 선택.
Main에서
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
//2. Driver Loading
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Loading Success");
} catch (ClassNotFoundException e) {
System.out.println("Class Not Found");
}
//3. Connection
Connection conn = null;
String str = "jdbc:mysql://Win8-22:3306/test"; //내컴터이름과 포트번호
try{
conn = DriverManager.getConnection(str,"root","javamysql"); //아이디,비번 넣야함.
System.out.println("Connection Success");
}catch(SQLException ex){
System.out.println("Connection failure");
}
//4. Statement 객체 생성
Statement stmt = null;
try{
stmt = conn.createStatement();
//5. Query 실행
StringBuffer sb = new StringBuffer();
sb.append("CREATE TABLE telephone(");
sb.append("telnum CHAR(8) PRIMARY KEY, ");
sb.append("gubun INTEGER NOT NULL,");
sb.append("irum VARCHAR(20) NOT NULL,");
sb.append("howmany INTEGER NOT NULL,");
sb.append("gibon INTEGER,");
sb.append("fee INTEGER, ");
sb.append("tax INTEGER, ");
sb.append("total INTEGER)");
stmt.executeUpdate(sb.toString());
System.out.println("Table Creation Success");
}catch(SQLException ex){
ex.printStackTrace();
}
try{
if(stmt != null) stmt.close();
if(conn != null) conn.close();
}catch(SQLException ex){
ex.printStackTrace();
}
}
}
위와같이해서 로딩, 연결, 테이블까지 만들어줌.
그리고 dbinfo.properties 를
DBDRIVER=com.mysql.jdbc.Driver
DBURL=jdbc:mysql://localhost:3306/test
DBUSER=root
DBPWD=javamysql
이와 같이 변경해줌.
그리고 DBConnection은 user와 pwd를 다시 추가했으니 다시변경.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.util.Properties;
public class DBConnection{
private Properties info = null;
private Connection conn = null;
public DBConnection(){
info = new Properties();
try{
info.load(new FileInputStream("dbinfo.properties"));
}catch(FileNotFoundException ex){ ex.printStackTrace();
}catch(IOException ex){ ex.printStackTrace(); }
}
public void loadDriver(){
try{
Class.forName(info.getProperty("DBDRIVER"));
}catch(ClassNotFoundException ex){
System.out.println("Class Not Found");
}
}
public void setConnection(){
String url = info.getProperty("DBURL");
String user = info.getProperty("DBUSER");
String pwd = info.getProperty("DBPWD");
try{
conn = java.sql.DriverManager.getConnection(url, user, pwd);
}catch(java.sql.SQLException ex){
System.out.println("Cannot Connect Access");
}
}
public Connection getConnection(){
if(this.conn != null) return this.conn;
else return null;
}
}
그리고 다시 실행해보면 실행이 잘된다.
----------------------------------------------------
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
'Java & Oracle' 카테고리의 다른 글
전화요금관리프로그램(JDBC), JDBC, SqlEditor (0) | 2014.04.10 |
---|---|
자바 어제 배운. (0) | 2014.04.10 |
dearby, 전화요금관리프로그램, 원격접속 (0) | 2014.04.07 |
자바 ODBC설정, 성적관리프로그램(db와연결,스윙), 전화요금관리프로그램(찾기기능없음,스윙x,콘솔창으로) (0) | 2014.04.04 |
자바 UDP, NIO와IO속도측정, JDBC 시작(설정) (0) | 2014.04.03 |