优化改版

master
wangbing 5 years ago
parent d3b4bba01e
commit 537f126ef7

@ -2,6 +2,7 @@ package xyz.wbsite.wsqlite;
import java.io.File;
import java.sql.*;
import java.sql.Date;
/**
* xyz.wbsite.wsqlite.Client
@ -11,7 +12,6 @@ import java.sql.*;
public class Client {
Connection connection;
Statement statement;
ResultSet resultSet;
String dbFilePath;
@ -38,7 +38,7 @@ public class Client {
*/
public void execute(String sql) throws SQLException, ClassNotFoundException {
try {
getStatement().execute(sql);
executeUpdate(sql);
} finally {
destroyed();
}
@ -51,27 +51,61 @@ public class Client {
* @throws SQLException
* @throws ClassNotFoundException
*/
public ResultSet executeQuery(String sql) throws SQLException, ClassNotFoundException {
return getStatement().executeQuery(sql);
public ResultSet executeQuery(String sql, Object... args) throws SQLException, ClassNotFoundException {
PreparedStatement preparedStatement = getConnection().prepareStatement(sql);
setArg(preparedStatement, args);
return preparedStatement.executeQuery();
}
/**
* sql
* sql
*
* @param sqls
* @param sql
* @throws SQLException
* @throws ClassNotFoundException
*/
public int executeUpdate(String... sqls) throws SQLException, ClassNotFoundException {
int count = 0;
public int executeUpdate(String sql, Object... args) throws SQLException, ClassNotFoundException {
try {
for (String sql : sqls) {
count += getStatement().executeUpdate(sql);
}
PreparedStatement preparedStatement = getConnection().prepareStatement(sql);
setArg(preparedStatement, args);
return preparedStatement.executeUpdate();
} finally {
destroyed();
}
return count;
}
private void setArg(PreparedStatement ps, Object... args) throws SQLException {
for (int i = 0; i < args.length; i++) {
Object arg = args[i];
if (arg == null) {
} else if (arg instanceof String) {
ps.setString(i + 1, (String) arg);
} else if (arg instanceof Date) {
ps.setDate(i + 1, (Date) arg);
} else if (arg instanceof Time) {
ps.setTime(i + 1, (Time) arg);
} else if (arg instanceof java.util.Date) {
ps.setLong(i + 1, ((java.util.Date) arg).getTime());
} else if (arg instanceof Boolean) {
ps.setBoolean(i + 1, (Boolean) arg);
} else if (arg instanceof Byte) {
ps.setByte(i + 1, (Byte) arg);
} else if (arg instanceof Short) {
ps.setShort(i + 1, (Short) arg);
} else if (arg instanceof Integer) {
ps.setInt(i + 1, (int) arg);
} else if (arg instanceof Long) {
ps.setLong(i + 1, (long) arg);
} else if (arg instanceof Float) {
ps.setFloat(i + 1, (float) arg);
} else if (arg instanceof Double) {
ps.setDouble(i + 1, (double) arg);
} else if (arg instanceof byte[]) {
ps.setBytes(i + 1, (byte[]) arg);
}
}
}
/**
@ -89,16 +123,6 @@ public class Client {
return connection;
}
/**
* Statement
*/
Statement getStatement() throws SQLException, ClassNotFoundException {
if (null == statement) {
statement = getConnection().createStatement();
}
return statement;
}
/**
*
*/
@ -109,10 +133,6 @@ public class Client {
resultSet = null;
}
if (null != statement) {
statement.close();
statement = null;
}
if (null != connection) {
connection.close();
connection = null;

@ -5,10 +5,7 @@ import xyz.wbsite.wsqlite.anonation.TableField;
import java.io.File;
import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* xyz.wbsite.wsqlite.Client
@ -67,6 +64,9 @@ public class ObjectClient extends Client {
} else if (f.getType() == Byte[].class || f.getType() == byte[].class) {
sql.append(f.getName().toUpperCase());
sql.append(" BLOB,");
} else if (f.getType() == Date.class) {
sql.append(f.getName().toUpperCase());
sql.append(" TIMESTAMP,");
}
}
}
@ -94,41 +94,14 @@ public class ObjectClient extends Client {
StringBuffer fieldsSql = new StringBuffer();
StringBuffer valueSql = new StringBuffer();
Object[] values = new Object[fs.size()];
for (int i = 0; i < fs.size(); i++) {
Field f = fs.get(i);
f.setAccessible(true);
fieldsSql.append(f.getName().toUpperCase());
Object value = f.get(po);
if (value == null) {
valueSql.append("NULL");
} else if (f.getType() == String.class) {
valueSql.append("'");
valueSql.append(value);
valueSql.append("'");
} else if (f.getType() == Boolean.class || f.getType() == boolean.class) {
valueSql.append("'");
valueSql.append(String.valueOf(value));
valueSql.append("'");
} else if (f.getType() == Byte.class || f.getType() == byte.class ||
f.getType() == Short.class || f.getType() == short.class ||
f.getType() == Character.class || f.getType() == char.class ||
f.getType() == Integer.class || f.getType() == int.class ||
f.getType() == Long.class || f.getType() == long.class) {
valueSql.append("'");
valueSql.append(value);
valueSql.append("'");
} else if (f.getType() == Float.class || f.getType() == float.class ||
f.getType() == Double.class || f.getType() == double.class) {
valueSql.append("'");
valueSql.append(value);
valueSql.append("'");
} else if (f.getType() == Byte[].class || f.getType() == byte[].class) {
valueSql.append("'");
valueSql.append(value);
valueSql.append("'");
}
valueSql.append("?");
values[i] = f.get(po);
if (i != fs.size() - 1) {
fieldsSql.append(",");
valueSql.append(",");
@ -140,7 +113,7 @@ public class ObjectClient extends Client {
sql.append(valueSql);
sql.append(")");
System.out.println("SQL ==> " + sql.toString());
return executeUpdate(sql.toString());
return executeUpdate(sql.toString(), values);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
@ -182,49 +155,21 @@ public class ObjectClient extends Client {
if (aClass == null) {
System.err.println(poClass.getName() + " not found.");
} else {
//获取字段列表
List<Field> fs = getFields(poClass);
StringBuffer sql = new StringBuffer();
Object[] values = new Object[fs.size()];
sql.append("UPDATE ");
sql.append(aClass.getSimpleName());
sql.append(" SET ");
//获取字段列表
List<Field> fs = getFields(poClass);
for (int i = 0; i < fs.size(); i++) {
Field f = fs.get(i);
f.setAccessible(true);
sql.append(f.getName());
sql.append(" = ");
Object value = f.get(po);
if (value == null) {
sql.append("NULL");
} else if (f.getType() == String.class) {
sql.append("'");
sql.append(value);
sql.append("'");
} else if (f.getType() == Boolean.class || f.getType() == boolean.class) {
sql.append("'");
sql.append(String.valueOf(value));
sql.append("'");
} else if (f.getType() == Byte.class || f.getType() == byte.class ||
f.getType() == Short.class || f.getType() == short.class ||
f.getType() == Character.class || f.getType() == char.class ||
f.getType() == Integer.class || f.getType() == int.class ||
f.getType() == Long.class || f.getType() == long.class) {
sql.append("'");
sql.append(value);
sql.append("'");
} else if (f.getType() == Float.class || f.getType() == float.class ||
f.getType() == Double.class || f.getType() == double.class) {
sql.append("'");
sql.append(value);
sql.append("'");
} else if (f.getType() == Byte[].class || f.getType() == byte[].class) {
sql.append("'");
sql.append(value);
sql.append("'");
}
sql.append(" = ?");
values[i] = f.get(po);
if (i != fs.size() - 1) {
sql.append(",");
}
@ -240,7 +185,7 @@ public class ObjectClient extends Client {
}
System.out.println("SQL ==> " + sql.toString());
return executeUpdate(sql.toString());
return executeUpdate(sql.toString(), values);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
@ -350,9 +295,12 @@ public class ObjectClient extends Client {
} else if (f.getType() == Byte[].class || f.getType() == byte[].class) {
byte[] v = resultSet.getBytes(f.getName());
f.set(o, v);
} else if (f.getType() == Date.class) {
Date v = resultSet.getDate(f.getName());
f.set(o, v);
} else {
String string = resultSet.getString(f.getName());
f.set(o, string);
String v = resultSet.getString(f.getName());
f.set(o, v);
}
}
rsList.add(o);

@ -2,6 +2,8 @@ package xyz.wbsite.wsqlite.entity;
import xyz.wbsite.wsqlite.anonation.TableField;
import java.util.Date;
public class Example {
@TableField(40)
@ -15,8 +17,6 @@ public class Example {
@TableField
private short s1;
@TableField
private char c1;
@TableField
private int age;
@TableField
private long id;
@ -24,6 +24,8 @@ public class Example {
private float f1;
@TableField
private double d1;
@TableField
private Date date;
public String getS() {
return s;
@ -65,14 +67,6 @@ public class Example {
this.s1 = s1;
}
public char getC1() {
return c1;
}
public void setC1(char c1) {
this.c1 = c1;
}
public int getAge() {
return age;
}
@ -104,4 +98,12 @@ public class Example {
public void setD1(double d1) {
this.d1 = d1;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}

@ -3,8 +3,8 @@ import xyz.wbsite.wsqlite.entity.Example;
import java.io.File;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.Date;
public class WsqliteTest {
public static void main(String[] args) {
@ -17,14 +17,14 @@ public class WsqliteTest {
Example example = new Example();
example.setS("wangbing");
example.setB(false);
example.setBs(null);
example.setBs(new byte[]{-1, 0, 1});
example.setB1((byte) 1);
example.setS1((short) 1);
example.setC1((char) 1);
example.setAge(1);
example.setId(1L);
example.setF1(0.1f);
example.setD1(0.1);
example.setDate(new Date());
h.insert(Example.class, example);
@ -35,14 +35,14 @@ public class WsqliteTest {
System.out.println("测试 update");
example.setS("wangbing");
example.setB(false);
example.setBs(null);
example.setBs(new byte[]{-2, 0, 2});
example.setB1((byte) 1);
example.setS1((short) 1);
example.setC1((char) 1);
example.setAge(1);
example.setId(1L);
example.setF1(0.1f);
example.setD1(0.1);
example.setDate(new Date());
int update = h.update(Example.class, example);
System.out.println(update);

Loading…
Cancel
Save

Powered by TurnKey Linux.