"DBService.java"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
 
(다른 사용자 한 명의 중간 판 4개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==클래스==
<source lang='java'>
<syntaxhighlight lang='java'>
import java.sql.Connection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.DriverManager;
34번째 줄: 34번째 줄:
}
}
public void query(String sql) {
public void query(String sql) {
query(sql, new String[]{});
query(sql, new Object[]{});
}
}
public void query(String sql, String... args) {
public void query(String sql, Object... args) {
try {
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i=0; i<args.length; i++) pstmt.setString(i+1, args[i]);
for(int i=0; i<args.length; i++) pstmt.setString(i+1, args[i].toString());
pstmt.executeUpdate();
pstmt.executeUpdate();
} catch (SQLException e) {
} catch (SQLException e) {
46번째 줄: 46번째 줄:
}
}
public Array queryRows(String sql) {
public Array queryRows(String sql) {
return queryRows(sql, new String[]{});
return queryRows(sql, new Object[]{});
}
}
public Array queryRows(String sql, String... args) {
public Array queryRows(String sql, Object... args) {
try {
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i=0; i<args.length; i++) pstmt.setString(i+1, args[i]);
for(int i=0; i<args.length; i++) pstmt.setString(i+1, args[i].toString());
ResultSet rs = pstmt.executeQuery();
ResultSet rs = pstmt.executeQuery();
ResultSetMetaData md = rs.getMetaData();
ResultSetMetaData md = rs.getMetaData();
68번째 줄: 68번째 줄:
}
}
}
}
</source>
</syntaxhighlight>
 
==테스트 코드==
<syntaxhighlight lang='java'>
DBService db = DBService.getDB();
db.query("DROP TABLE IF EXISTS TEST");
db.query("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))");
db.query("INSERT INTO TEST VALUES (?,?)", 1, "Hello");
db.query("INSERT INTO TEST VALUES (?,?)", 2, "World");
System.out.println(db.queryRows("SELECT * FROM TEST ORDER BY ID"));
// [{ID=1, NAME=Hello}, {ID=2, NAME=World}]
db.query("UPDATE TEST SET NAME=? WHERE ID=?", "Hi", 1);
db.query("DELETE FROM TEST WHERE ID=?", 2);
System.out.println(db.queryRows("SELECT * FROM TEST ORDER BY ID"));
// [{ID=1, NAME=Hi}]
</syntaxhighlight>


==같이 보기==
==같이 보기==
* [[Array.java]]
* [[Array.java]]
* [[Util.java]]
* [[Util.java]]
* [[H2 Console - Sample SQL Script‎]]


[[분류:Java]]
[[분류:Java]]

2020년 11월 2일 (월) 02:49 기준 최신판

1 클래스[ | ]

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

public class DBService {
	private static DBService instance = null;
	private DBService() {}
	public static DBService getDB() {
		if (instance == null) {
			synchronized (DBService.class) {
				if (instance == null) {
					instance = new DBService();
					instance.init();
				}
			}
		}
		return instance;
	}
	private Connection conn;
	public void init() {
		try {
			Class.forName("org.h2.Driver");
			conn = DriverManager.getConnection("jdbc:h2:~/test","sa","");
		} catch (SQLException e) {  
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	public void query(String sql) {
		query(sql, new Object[]{});
	}
	public void query(String sql, Object... args) {
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			for(int i=0; i<args.length; i++) pstmt.setString(i+1, args[i].toString());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public Array queryRows(String sql) {
		return queryRows(sql, new Object[]{});
	}
	public Array queryRows(String sql, Object... args) {
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			for(int i=0; i<args.length; i++) pstmt.setString(i+1, args[i].toString());
			ResultSet rs = pstmt.executeQuery();
			ResultSetMetaData md = rs.getMetaData();
			int columns = md.getColumnCount();
			Array rows = new Array();
			while(rs.next()){
				Array row = new Array();
				for(int i=1; i<=columns; ++i) row.put(md.getColumnName(i),rs.getObject(i).toString());
				rows.push(row);
			}
			return rows;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

2 테스트 코드[ | ]

		DBService db = DBService.getDB();
		db.query("DROP TABLE IF EXISTS TEST");
		db.query("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))");
		db.query("INSERT INTO TEST VALUES (?,?)", 1, "Hello");
		db.query("INSERT INTO TEST VALUES (?,?)", 2, "World");
		System.out.println(db.queryRows("SELECT * FROM TEST ORDER BY ID"));
		// [{ID=1, NAME=Hello}, {ID=2, NAME=World}]
		db.query("UPDATE TEST SET NAME=? WHERE ID=?", "Hi", 1);
		db.query("DELETE FROM TEST WHERE ID=?", 2);
		System.out.println(db.queryRows("SELECT * FROM TEST ORDER BY ID"));
		// [{ID=1, NAME=Hi}]

3 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}