package com.massky.connsqlserver;
import android.content.Context;
import android.content.SharedPreferences;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
//
public class BaseDao {
Class clazz;
public BaseDao() {
Type type = this.getClass().getGenericSuperclass();
Type[] types = ((ParameterizedType) type).getActualTypeArguments();
clazz = (Class) types[0];
}
//
public List queryList(T t) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = getQuerySql(t);
List list = new ArrayList();
try {
conn = DBUtilNew.getConn();
ps = conn.prepareStatement(sql);
common_excute(t, ps);
rs = ps.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int count = metaData.getColumnCount();
while (rs.next()) {
T obj = (T) clazz.newInstance();
for (int i = 0; i < count; i++) {
String fieldName = metaData.getColumnName(i + 1);
Field field = clazz.getDeclaredField(fieldName);
Method method = clazz.getMethod(getSetter(fieldName), field.getType());
method.invoke(obj, rs.getObject(i + 1));
}
list.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtilNew.close(rs, ps, conn);
}
return list;
}
//
public void deleteList(T t) {
Connection conn = null;
PreparedStatement ps = null;
String sql = getDeleteSql(t);
try {
conn = DBUtilNew.getConn();
ps = conn.prepareStatement(sql);
common_excute(t, ps);
ps.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtilNew.close(ps, conn);
}
}
/**
*
*
* @param t
* @param ps
* @throws IllegalAccessException
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws SQLException
*/
private void common_excute(T t, PreparedStatement ps) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, SQLException {
Field[] fields = clazz.getDeclaredFields();
int c = 1;
for (int i = 0; i < fields.length - 2; i++) {
fields[i].setAccessible(true);
Class> type = fields[i].getType();
//
if (fields[i].get(t) != null) {
if ("int".equals(type.getName()) && (int) fields[i].get(t) == -1)
continue;
String fieldName = fields[i].getName();
Method method = clazz.getMethod(getGetter(fieldName));
Object obj = method.invoke(t);
ps.setObject(c, obj);
fields[i].setAccessible(false);
c++;
}
}
}
/**
* 、 、
* @param sql
* @param params
* @return
* @throws SQLException
*/
public boolean updateByPreparedStatement(String sql,List
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 시각화 도구 FineReport와 AWS RedShift 연결(JDBC 방법)
Amazon Redshift는 클라우드의 완전 관리형, 페타바이트 규모 데이터 웨어하우스 서비스입니다.
수백 기가바이트의 데이터로 시작하여 페타바이트 이상까지 확장할 수 있습니다.
이렇게 하면 고객의 비즈니스와 고객...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.