package com.ctl.util;

import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import javax.print.attribute.standard.Media; import com.ctl.bean.Person;
import com.mysql.jdbc.Statement; /**
*
* @author Administrator
* @category */
public class DButils {
private static String driver;
private static String url;
private static String username;
private static String password;
private static Connection conn;
private static ThreadLocal<Connection> connHolder = new ThreadLocal<Connection>();
static {
driver = ConfigUtils.getType("mysql.driver");
url = ConfigUtils.getType("mysql.url");
username = ConfigUtils.getType("mysql.username");
password = ConfigUtils.getType("mysql.password");
try {
Runtime.getRuntime().exec("net start mysql");
} catch (IOException e) {
e.printStackTrace();
}
} /**
*
* @return Connection
* @throws SQLException
* @throws ClassNotFoundException
*/
public static Connection getConnection() throws SQLException,
ClassNotFoundException {
conn = connHolder.get();
if (conn == null || conn.isClosed()) {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
conn.setAutoCommit(false);
connHolder.set(conn);
}
return conn;
} /**
* @category 依据sql得到记录总数
* @param sql
* @return 假设返回-1代表出错
*/
public static int getCount(String sql) {
try {
ResultSet rs = getConnection().createStatement().executeQuery(sql);
if (rs.next()) {
return rs.getInt(1);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return -1; } /**
* @category close Connection
* @throws SQLException
*/
public static void close() throws SQLException {
conn.close();
connHolder.set(null);
} public static int createTable(Class c) {
String tableName = c.getSimpleName().toLowerCase();// person
return 0; } /*
* public static void insertEntity(Class c, Object o) {
* System.out.println(o); Object fileds[] = o.toString().split("__"); int
* fieldSize = fileds.length; System.out.println(fieldSize); String
* tableName = c.getSimpleName().toLowerCase();// person // String
* className=c.getSimpleName();//Person int bookIsExis = getCount(
* "SELECT count(table_name) FROM information_schema.TABLES WHERE table_name='"
* + tableName + "' "); if (bookIsExis < 1) { System.out.println("表不存在");
* return; } StringBuffer sql = new StringBuffer("insert into " + tableName
* + " values("); for (int i = 0; i < fieldSize; i++) { sql.append("? ,"); }
* sql.deleteCharAt(sql.length() - 1); sql.append(")");
* System.out.println(sql); PreparedStatement ps; try { ps =
* getConnection().prepareStatement(sql.toString()); for (int i = 0; i <
* fieldSize; i++) { if (fileds[i] != null && !"".equals(fileds[i]) &&
* !"null".equals(fileds[i])) { ps.setObject(i + 1, fileds[i]); } else {
* ps.setObject(i + 1, null); } } ps.executeUpdate();
* getConnection().commit(); } catch (Exception e) { e.printStackTrace(); }
*
* }
*/
public static void insertEntity(Class c, Object obj) {
// System.out.println("1");
if (obj == null || c.getSimpleName().equals(obj.getClass().getName()))
return;
Field[] fields = obj.getClass().getDeclaredFields();
int fieldSize = fields.length;
String tableName = c.getSimpleName().toLowerCase();// person
String[] types1 = { "int", "java.lang.String", "boolean", "char",
"float", "double", "long", "short", "byte" };
String[] types2 = { "Integer", "java.lang.String", "java.lang.Boolean",
"java.lang.Character", "java.lang.Float", "java.lang.Double",
"java.lang.Long", "java.lang.Short", "java.lang.Byte" }; StringBuffer sql = new StringBuffer("insert into " + tableName
+ " values(");
for (int i = 0; i < fieldSize; i++) {
sql.append("?,");
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
System.out.println(sql);
PreparedStatement ps = null;
try {
ps = getConnection().prepareStatement(sql.toString());
for (int j = 0; j < fieldSize; j++) {
fields[j].setAccessible(true);
for (int i = 0; i < types1.length; i++) {
if (fields[j].getType().getName()
.equalsIgnoreCase(types1[i])
|| fields[j].getType().getName()
.equalsIgnoreCase(types2[i])) { if (fields[j].get(obj) != null
&& !"".equals(fields[j].get(obj))
&& !"null".equals(fields[j].get(obj))) {
System.out.println(fields[j].get(obj) + " ");
ps.setObject(j + 1, fields[j].get(obj));
} else {
System.out.println(fields[j].get(obj) + " ");
ps.setObject(j + 1, null);
}
}
}
}
System.out.println(ps.toString());
ps.executeUpdate();
getConnection().commit();
} catch (Exception e1) {
e1.printStackTrace();
} } public static void main(String[] args) {
try {
DButils.getConnection();
// System.out.println(getCount("SELECT count(table_name) FROM information_schema.TABLES WHERE table_name='book' "));
Person person = new Person();
person.setId(1);
person.setAddress("xin xiang");
insertEntity(Person.class, person);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

最新文章

  1. css的五种属性值----在路上(21)
  2. iOS 自定义键盘ToolBar(与键盘的弹出、收起保持一致)
  3. C#多线程操作界面控件的解决方案(转)
  4. Atitit.木马&#160;病毒&#160;免杀&#160;技术&#160;360免杀&#160;杀毒软件免杀&#160;原理与原则&#160;attilax&#160;总结
  5. 16年大连网络赛 1006 Football Games
  6. Tengine – Nginx衍生版
  7. Redis Admin UI
  8. ASP.NET-FineUI开发实践-9(二)
  9. PHP根据URL提取根域名
  10. Django开发小型站之前期准备(一)
  11. P1045 麦森数
  12. 后端分布式系列:分布式存储-MySQL 数据库事务与复制
  13. 自己用 Netty 实现一个简单的 RPC
  14. Luminar 3 for Mac(照片编辑工具)v3.1.0中文特别版
  15. input设置背景透明、placeholder的字体颜色及大小
  16. 谈谈我们对userAgent的看法,为什么爬虫中需要userAgent?
  17. spring bean 的生命周期
  18. GPS坐标转换 百度地图API调用
  19. SVD图片有损压缩测试
  20. 【Oracle】RAC下的一些经常使用命令(一)

热门文章

  1. MySQL本地登录及数据库导入导出
  2. JavaScript中函数的定义
  3. spring tool suite (sts) 创建springmvc(没有实践)
  4. 南宁2017ICPC总结
  5. DEV Express
  6. angularjs ng-repeat下验证问题
  7. 分享21个基于jquery菜单导航的效果
  8. Python工程师面试题目
  9. Codeforces474E - Pillars
  10. codevs 1743 反转卡片 rope or splay