Java 實作Gbase資料庫增删改查功能
具體代碼如下
主要: 要記得在官網下載下傳驅動包gbase-connector-java-8.3-bin.jar
package com.advance.JDBC;
import org.apache.log4j.Logger;
import org.apache.storm.command.list;
import java.sql.;
import java.util.;
public class Connect_GBase {
private static Logger logger = Logger.getLogger(Connect_GBase.class);
//三大核心接口
private static Connection conn = null;
private static PreparedStatement pstmt = null;
private static ResultSet rs = null;
public static Connection connectGBase() {
//加載MySql的驅動類
try {
Class.forName(“com.gbase.jdbc.Driver”);
} catch (ClassNotFoundException e) {
logger.error(“找不到驅動程式類 ,加載驅動失敗!”);
e.printStackTrace();
}
//URL
String url = “jdbc:gbase://10.136.1.215:5258/testdb?characterEncoding=utf8”;
//賬号
String username = “root”;
//密碼
String password = “gbase8a”;
try {
conn = DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
logger.error(“資料庫連接配接失敗!”);
e.printStackTrace();
}
return conn;
}
//關閉資料庫連接配接
public static void closeConnection(){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static List resultSetToList(ResultSet rs,String columnName) throws java.sql.SQLException {
if (rs == null)
return Collections.EMPTY_LIST;
ResultSetMetaData md = rs.getMetaData(); //得到結果集(rs)的結構資訊,比如字段數、字段名等
int columnCount = md.getColumnCount(); //傳回此 ResultSet 對象中的列數
List list = new ArrayList();
// Map rowData;
// while (rs.next()) {
//
// rowData = new HashMap(columnCount);
// for (int i = 1; i <= columnCount; i++) {
// rowData.put(md.getColumnName(i), rs.getObject(i));
// System.out.println(rowData.get(“id”) + “" + rowData.get(“name”) + "” + rowData.get(“age”) );
// }
// if(columnName==null) {
// list.add(rowData);
// }else {
// list.add(rowData.get(columnName));
// }
// }
while (rs.next()) {
System.out.println(
rs.getString(“id”) + “_” + rs.getString(“name”));
}
return list;
}
public static ResultSet query(String sql) throws SQLException, ClassNotFoundException {
conn = connectGBase();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
return rs;
}
public static void update(String sql,Object []values) throws SQLException, ClassNotFoundException {
//擷取資料庫連結
conn=connectGBase();
try {
//預編譯
pstmt=conn.prepareStatement(sql);
//擷取ParameterMetaData()對象
ParameterMetaData pmd=pstmt.getParameterMetaData();
//擷取參數個數
int number=pmd.getParameterCount();
//循環設定參數值
for (int i = 1; i <=number; i++) {
pstmt.setObject(i, values[i-1]);
}
pstmt.executeUpdate();
System.out.println(“執行成功”);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void output(ResultSet rs) throws SQLException {
ResultSetMetaData md = rs.getMetaData(); //得到結果集(rs)的結構資訊,比如字段數、字段名等
int columnCount = md.getColumnCount();
while(rs.next())
{
StringBuffer sb = new StringBuffer();
for (int i = 1; i <= columnCount; i++) {
sb.append(rs.getObject(i)+" ");
}
logger.debug(sb);
System.out.println(sb);
}
while (rs.next()) {
System.out.println(rs.getString(“name”));
}
}
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//update(“update aa set name = ? where id = ?”,new Object[]{“7”,“1”});
// update("insert into COMPANY (id,name,age , address, salary) " +
// “values (?,?,?,?,?)”,new Object[]{“2”,“lisi”,“4”,“6”,“5”});
//update(“delete from aa where id = ?”,new Object[]{“5”});
ResultSet rs = query("select * from COMPANY ");
List<Map<String,Object>> result = resultSetToList(rs,“name”);
output(rs);
closeConnection();
}
// 建表語句:
// CREATE TABLE COMPANY(
// ID int ,
// NAME VARCHAR(40) NOT NULL,
// AGE INT NOT NULL,
// ADDRESS CHAR(50),
// SALARY DECIMAL(10,2)
//);
}