일단 단어장을 만들기 위해서 뭐가 필요할지에 대해 이야기 해 보겠다.
1. 단어장을 만들기 위해서는 단어들을 저장할 DB가 필요하고
2. 단어장에 넣을 단어들을 입력하기 위한 GUI 창이 필요하고
3. 단어들을 보여줄 GUI가 필요하다.
이 세 가지만 다룰 줄 안다면 간단하게 단어장을 만들 수 있다.
1. DB 다루기
MySql과 JDBC를 이용하여 자바에서 DB를 사용하도록 하자.
MySql 과 JDBC를 저장하는 방법은 블로그 내 다른 글을 참조하도록 하자.
그럼 이제 단어장을 만들기 위해 필요한 DB 연산 기능을 생각해 보자.
우선 무엇보다도 저장할 공간 즉 Table이 필요하다.
이를 위해서는 Create Table을 이용하여 DB를 만들어야 한다.
그 후 입력한 단어들을 저장하기 위해서 Insert 문을 사용하게 된다.
그리고 사용자가 원하는 단어를 뽑기 우해서 Select 문을 사용하고
필요없는 단어를 지우기 위해 Delete 문을 사용하여야 한다.
이 정도 기본적인 Sql 문들을 이용할 줄 알고 이를 Java에서 나타내기 위해
JDBC를 잘 이용한다면 DB 구축은 쉽게 할 수 있다.
현재 본인이 만들어 놓은 단어장에 들어 있는 DB 관련 소스이다.
package dictionary;
import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import dictionary.DTable.RowListener;
public class D_DB {
static Connection con = null;
static Statement stmt = null;
static String userid = "root", password = "root";
static String url = "jdbc:mysql://localhost:3306/test";
public static Connection getConnection() {
try {
Class.forName("org.gjt.mm.mysql.Driver"); // Class.forName("myDriver.ClassName");
// ?
} catch (java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
try {
con = DriverManager.getConnection(url, userid, password);
} catch (SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}
return con;
}
public static void createTables() {
Connection con = getConnection();
String query;
Statement stmt;
try {
query = "create table Word " + "(name varchar(32), "
+ "mean varchar(200), " + "importance TINYINT , "
+ "count SMALLINT)";
stmt = con.createStatement();
stmt.executeUpdate(query);
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void insertWord(String word, String mean, int importance) {
Connection con = getConnection();
String insert = "insert into Word values('" + word + "', '" + mean
+ "', " + importance + ", " + 1 + ")";
String select = "SELECT name, count FROM Word WHERE name = '" + word + "'";
try {
stmt = con.createStatement();
ResultSet result = stmt.executeQuery(select);
if (result.first() == false) {
stmt.executeUpdate(insert);
} else {
int count = result.getInt(2);
count++;
String update = "update Word set mean = '" + mean + "', count = " + count
+ " where name = '" + word+ "'";
stmt.executeUpdate(update);
}
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void showTable() {
Connection con = getConnection();
String select = "SELECT * FROM Word ";
try {
stmt = con.createStatement();
ResultSet result = stmt.executeQuery(select);
while(result.next()){
String word = result.getString(1);
String mean = result.getString(2);
int imp = result.getInt(3);
int count = result.getInt(4);
System.out.println("영어 단어 " + word + " 영어 뜻 " +
mean + " 중요도" + imp + " 저장횟수 " + count);
}
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void DeleteWord(String word) {
Connection con = getConnection();
String delete = "DELETE FROM Word where name = '" + word + "'";
try {
stmt = con.createStatement();
stmt.executeUpdate(delete);
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void setTable(JTable table,DefaultTableModel model) {
Connection con = D_DB.getConnection();
String select = "SELECT name FROM Word";
String title = "word";
try {
stmt = con.createStatement();
ResultSet result = stmt.executeQuery(select);
model.addColumn(title);
while (result.next()) {
String word = result.getString(1);
model.addRow(new Object[] { word });
}
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void getData(String[] data, String word){
Connection con = getConnection();
String select = "SELECT name,mean FROM Word where name = '" +
word + "'";
try {
stmt = con.createStatement();
ResultSet result = stmt.executeQuery(select);
while(result.next()){
data[0] = result.getString(1);
data[1] = result.getString(2);
}
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
이 Code를 D_DB.java 라는 클래스를 새로 만든 후 붙여 넣으면 된다.
질문 사항이 있으면 댓글을 달아주시기 바랍니다.
다음 번에는 단어장을 만들 때 필요한 GUI를 만드는 방법을 알려드리겠
습니다.
댓글 없음:
댓글 쓰기