JAVA JBDC连接MySql数据库示例心得一
来源:互联网 发布:安心360定位软件 编辑:程序博客网 时间:2024/06/04 03:34
①–>下载MySql数据库驱动解压获得JAR文件导入编写的Java程序中
下图中1是复制过来的驱动文件,2是导入的文件,要导入才可以用。
②–> 连接数据库,数据查询,数据更新
A是数据库对应的数据类如下:
package com.jdbc;public class A { private int id; private String name; private String password; private String email; public A() { } public A(int id, String name, String password, String email) { this.id = id; this.name = name; this.password = password; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "A [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + "]"; }}
jdbc.properties是数据库配置文件:
driver=com.mysql.jdbc.Driverjdbcurl=jdbc:mysql://localhost:3306/demodb?useUnicode=true&characterEncoding=utf-8&useSSL=falseuser=rootpassword=123456
JDBCTools是JDBC工具类,包括数据库连接,数据更新如下:
package com.jdbc;import java.io.IOException;import java.io.InputStream;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.ResultSetMetaData;import java.sql.SQLException;import java.util.HashMap;import java.util.Map;import java.util.Properties;import com.mysql.jdbc.Statement;public class JDBCTools { /** * 获取数据库连接 * */ public Connection GetConnection() throws IOException, SQLException, ClassNotFoundException { //使用配置文件方式连接数据库 Properties properties = new Properties(); //获取流 InputStream in = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties"); properties.load(in); String driver = properties.getProperty("driver"); String jdbcurl = properties.getProperty("jdbcurl"); String user = properties.getProperty("user"); String password = properties.getProperty("password"); Class.forName(driver); return DriverManager.getConnection(jdbcurl, user, password); } /** * 数据获取 * */ public <T> T get(Class<T> clazz,String sql,Object ...obj){ T eneity = null; Connection conn = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; ResultSetMetaData setMetaData = null; try { conn = GetConnection(); preparedStatement = conn.prepareStatement(sql); for(int i=0;i<obj.length;i++){ preparedStatement.setObject(i+1, obj[i]); } resultSet = preparedStatement.executeQuery();//得到结果集 //得到ResultSetMetaData对象 setMetaData = resultSet.getMetaData(); //创建一个Map<String ,Object>对象,键:SQL查询的列的别名,值:列的值 Map<String, Object> values = new HashMap<String, Object>(); //处理结果集,利用ResultSetMetaData填充对应的Map对象 if(resultSet.next()){ for(int i=0;i<setMetaData.getColumnCount();i++){ String columnLabel = setMetaData.getColumnLabel(i+1);//得到列名 Object columnValue = resultSet.getObject(i+1); System.out.println(columnValue.getClass().getName()); //System.out.println(columnLabel+":"+columnValue); //键列名与对应的值存入Map对象 values.put(columnLabel, columnValue); } if(values.size()>0){ //若Map不为空集,利用反射创建clazz对应的对象 eneity = clazz.newInstance(); //遍历Map对象,取出对应的属性的值 for(Map.Entry<String, Object> entry:values.entrySet()){ String fieldName = entry.getKey(); Object value = entry.getValue(); //利用反射保存数据 SetValues(eneity, fieldName, value); } } } return eneity; } catch (Exception e) { e.printStackTrace(); } finally{ //关闭连接 release(resultSet, (Statement) preparedStatement, conn); } return eneity; } /** * 保存数据库数据到对应的JAVA类中 * */ public <T> void SetValues(T t,String fieldName,Object value){ //将传过来的值首字母大写 String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1); Method method = null; try { //获取该类下的所有属性值 Field field = t.getClass().getDeclaredField(fieldName); //初始化变量类型数组 Class[] parameterTypes = new Class[1]; //获取该属性值的变量类型对象 parameterTypes[0] = field.getType(); //传入方法名称及方法的类型获取该方法的对象 method = t.getClass().getMethod("set"+methodName,parameterTypes); //获取传人的值的变量类型 method.invoke(t,value); } catch (Exception e) { e.printStackTrace(); } } /** * 执行SQL的方法,包含insert,delete,updata * sql="insert into A (id,name,password,email) values(?,?,?,?);"; * ?号代表条件值 * */ public void Updata(String sql,Object ...obj){ Connection conn = null; PreparedStatement preparedStatement= null; try { conn = GetConnection(); preparedStatement = conn.prepareStatement(sql); for(int i=0;i<obj.length;i++){ preparedStatement.setObject(i+1, obj[i]); } preparedStatement.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally{ release(null, (Statement) preparedStatement, conn); } } /** * 关闭数据库 * */ public static void release(ResultSet rs, Statement sm, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (sm != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } }}
测试代码:
JDBCTools jdbcTools = new JDBCTools(); A a = jdbcTools.get(A.class, sql6, 3); System.out.println(a);
阅读全文
2 0
- JAVA JBDC连接MySql数据库示例心得一
- JAVA JBDC+开源工具连接MySql数据库示例心得二
- PowerBuilder通过ODBC和JBDC连接mysql数据库
- spark通过jbdc连接MySQL
- jdbc:java连接mysql数据库示例
- java 连接MySQL数据库提取信息示例
- Java连接MYSQL数据库的示例代码
- 连接mysql数据库示例
- 在Eclipse连接mysql-----配置jbdc
- JSP案例_利用JBDC连接Mysql数据库,并查询数据
- Java连接数据库示例
- JBDC简单的使用方法(一) + java
- JAVA高级【4.3】《Java核心技术2》数据库-Mysql连接示例
- MySql连接数据库简单示例
- JDBC连接MYSQL数据库示例
- JAVA通过JDBC连接MySQL数据库方法和示例
- Java 通过 JDBC 连接 MySQL 数据库的简单示例
- MySQL输入密码后闪退(jbdc连接异常)
- 快学scala之Array、List、tuple模式匹配
- ORACLE数据库分页的集中方法
- android APK动态添加数据
- 快速排序的原理
- [LeetCode] Longest Valid Parentheses
- JAVA JBDC连接MySql数据库示例心得一
- 数组-leetcode 1. Two Sum
- [Algorithm] Combination问题
- JFreeChart 制作3D饼状图分析数据
- ARouter源码解析03-路由跳转
- RabbitMQ 学习笔记(四):Routing
- Fedora 全系列 安装网易云音乐
- jquery对象和javascript对象即DOM对象相互转换的方法
- JS对于字符串的切割截取