public class WeatherDao { private static Connection conn = null; private static PreparedStatement pstmt = null; /** * Author:Allison * Date:2013-04-02 * Description:执行批量添加 */ public void addWeatherBatch(List<WeatherData> list) { conn = DBConn.getConnection(); try { conn.setAutoCommit(false); String sql = "insert into weather_data(currentDate,highTemp,lowTemp,weather,windDirection,windPower,week,city)values(?,?,?,?,?,?,?,?)"; pstmt = conn.prepareStatement(sql); for (WeatherData WeatherData : list) { pstmt.setString(1, WeatherData.getcurrentDate()); pstmt.setDouble(2, WeatherData.getHighTemp()); pstmt.setDouble(3, WeatherData.getLowTemp()); pstmt.setString(4, WeatherData.getWeather()); pstmt.setString(5, WeatherData.getWindDirection()); pstmt.setString(6, WeatherData.getWindPower()); pstmt.setString(7, WeatherData.getWeek()); pstmt.setString(8, WeatherData.getCity()); pstmt.addBatch(); } pstmt.executeBatch(); conn.commit(); } catch (SQLException e) { try { conn.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } finally { try { DBConn.close(); } catch (Exception e) { e.printStackTrace(); } } } /** * Author:Allison datatime:2013-03-28 introduction:添加weather详细信息 */ public boolean addWeather(WeatherData weather) { // step1 定义sql语句 String sqlText = "insert into weather_data(currentDate,highTemp,lowTemp,weather,windDirection,windPower,week,city)values(?,?,?,?,?,?,?,?)"; Object[] oParams = { weather.getcurrentDate(), weather.getHighTemp(), weather.getLowTemp(), weather.getWeather(), weather.getWindDirection(), weather.getWindPower(), weather.getWeek(), weather.getCity() }; // step2 执行sql语句 // 执行sql命令 int iRs = DBConn.exePreIUD(sqlText, oParams); // 关闭DBConn对象 DBConn.close(); // step3 返回结果 return iRs > 0 ? true : false; } /* * Author:Allison datatime:2011-10-19introduct:查询日志 */ public ArrayList<WeatherData> findWeatherByDateCity(String date, String city){ //step1 定义sql语句 String sqlText="select currentDate,city from weather_data where currentDate='"+ date +"' and city ='"+city+"'"; //step2 执行sql语句 ResultSet rs = DBConn.exeR(sqlText); try { ArrayList<WeatherData> list = new ArrayList<WeatherData>(); while(rs.next()){ //定义一个WeatherData对象类型 WeatherData cobject = new WeatherData(); cobject.setcurrentDate(rs.getString(1)); cobject.setCity(rs.getString(2)); list.add(cobject); } return list; } catch (SQLException e) { e.printStackTrace(); return null; }finally{ DBConn.close(); } } }
public class DBConn { // 四个核心变量、六个方法 private static Connection conn = null;// 连接数据库 private static Statement stmt = null;// 发送SQL命令 private static PreparedStatement pstmt = null;// 发送带参数的sql命令 private static ResultSet rs = null;// 获得返回的数据集 public static Connection getConnection() { // step1:找驱动 try { Class.forName(Config.DRIVER); conn = DriverManager.getConnection(Config.URL + Config.DBNAME, Config.DBUSERNAME, Config.DBPASS); // DatabaseMetaData dbmd = conn.getMetaData(); // System.out.println("db name: " + dbmd.getDatabaseProductName()); // System.out.println("tx: " + dbmd.supportsTransactions()); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * Author:Allison * Date:2011-10-12 * Description:执行RUD操作 */ public static int exeIUD(String sqlText) { // step1:创建连接 getConnection(); // step2:判断连接 if (conn != null) { try { // step3:定义statement对象 stmt = conn.createStatement(); // step4:执行sql命令 int iRs = stmt.executeUpdate(sqlText); return iRs; } catch (SQLException e) { e.printStackTrace(); } } return -1; } /** * Author:Allison * Date:2011-10-12 * Description:执行RUD操作 */ public static int exePreIUD(String sqlText, Object[] oParams) { // step1:创建连接 getConnection(); // step2:判断连接 if (conn != null) { try { // conn.setAutoCommit(false); // step3:定义pstmt对象 pstmt = conn.prepareStatement(sqlText); // step:传参 for (int i = 0; i < oParams.length; i++) { pstmt.setObject(i + 1, oParams[i]); } // step5:执行sql命令 int iRs = pstmt.executeUpdate(); return iRs; } catch (SQLException e) { e.printStackTrace(); } } return -1; } /** * Author:Allison * Date:2011-10-12 * Description:执行select操作 */ public static ResultSet exeR(String sqlText) { // step1:建立连接 getConnection(); // step2:判断连接 if (conn != null) { try { // step3:建立stmt对象 stmt = conn.createStatement(); // step4:执行sql命令 rs = stmt.executeQuery(sqlText); return rs; } catch (SQLException e) { e.printStackTrace(); } } return null; } /** * Author:Allison * Date:2011-10-12 * Description:执行select操作 */ public static ResultSet exePreR(String sqlText, Object[] oParams) { // step1:建立连接 getConnection(); // step2:判断连接 if (conn != null) { try { // step3:建立stmt对象 pstmt = conn.prepareStatement(sqlText); // step4:循环参数 for (int i = 0; i < oParams.length; i++) { pstmt.setObject(i + 1, oParams[i]); } // step5:执行sql命令 rs = pstmt.executeQuery(); return rs; } catch (SQLException e) { e.printStackTrace(); } } return null; } /** * Author:Allison * Date:2011-10-12 * Description:关闭四个核心变量 */ public static void close() { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.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 class WeatherData { private int id; private String currentDate; private double highTemp; private double lowTemp; private String weather; private String windDirection; private String windPower; private String week; private String city; public WeatherData() { } public WeatherData(int id, String currentDate, double highTemp, double lowTemp, String weather, String windDirection, String windPower, String week, String city) { super(); this.id = id; this.currentDate = currentDate; this.highTemp = highTemp; this.lowTemp = lowTemp; this.weather = weather; this.windDirection = windDirection; this.windPower = windPower; this.week = week; this.city = city; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getcurrentDate() { return currentDate; } public void setcurrentDate(String currentDate) { this.currentDate = currentDate; } public double getHighTemp() { return highTemp; } public void setHighTemp(double highTemp) { this.highTemp = highTemp; } public double getLowTemp() { return lowTemp; } public void setLowTemp(double lowTemp) { this.lowTemp = lowTemp; } public String getWeather() { return weather; } public void setWeather(String weather) { this.weather = weather; } public String getWindDirection() { return windDirection; } public void setWindDirection(String windDirection) { this.windDirection = windDirection; } public String getWindPower() { return windPower; } public void setWindPower(String windPower) { this.windPower = windPower; } public String getWeek() { return week; } public void setWeek(String week) { this.week = week; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } @Override public String toString() { return "WeatherData [id=" + id + ", currentDate=" + currentDate + ", highTemp=" + highTemp + ", lowTemp=" + lowTemp + ", weather=" + weather + ", windDirection=" + windDirection + ", windPower=" + windPower + ", week=" + week + ", city=" + city + "]"; } }
public class Config { //static静态成员声明Properties对象 private static Properties prop = new Properties(); //编写静态块加载prop里面属性文件 static{ try { prop.load(Config.class.getResourceAsStream("db.properties")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //定义静态变量,赋值数据库连接信息 public static final String DRIVER=prop.getProperty("DRIVER"); public static final String URL = prop.getProperty("MYSQLURL"); public static final String DBNAME = prop.getProperty("DATABASENAME"); public static final String DBUSERNAME = prop.getProperty("DBUSERNAME"); public static final String DBPASS = prop.getProperty("DBPASS"); }
DRIVER=com.mysql.jdbc.Driver MYSQLURL=jdbc:mysql://localhost:3306/ DATABASENAME=****** DBUSERNAME=****** DBPASS=******
相关推荐
本文将深入探讨JDBC中的三种批量处理方法,包括普通插入、批处理以及存储过程的批量执行,通过具体代码示例来展示如何实现这些批量操作,以及它们对系统性能的影响。 #### 普通插入操作 在JDBC中,最基本的批量...
1. **批量更新**:`Statement`对象提供了`addBatch()`方法添加SQL语句到批处理队列,然后调用`executeBatch()`一次性执行所有语句。 2. **批处理优化**:对于大量重复的操作,批处理可以显著提升性能,减少网络通信...
通过批量添加SQL语句到批处理队列中,然后一次性执行,可以显著提高插入速度。 #### 十二、JDBC其他API **12.1 可滚动结果集** 可滚动结果集允许用户前后移动游标位置,方便进行数据检索。 **12.2 分页技术** ...
在JDBC中处理大量数据时,批量更新(Batch Updates)能显著提高性能。通过调用Statement对象的addBatch()方法添加SQL语句,然后执行executeBatch()来一次性提交所有操作。 最后,确保正确关闭数据库连接,避免资源...
这通常涉及批处理(batch processing),在JDBC中可以通过设置PreparedStatement为批模式,然后使用addBatch()方法添加SQL语句,最后执行executeBatch()批量执行。 7. 查询操作:在JdbcUtils类中,可以执行查询单条...
2. **批处理**:利用JDBC的批处理功能,设置PreparedStatement的addBatch()方法添加多条SQL语句,最后调用executeBatch()执行。MyBatis会自动处理这部分逻辑,只需编写普通的插入语句即可。 针对Oracle数据库,我们...
在Java应用程序中使用MySQL Connector/J时,首先需要将"mysql-connector-java-5.1.46-bin.jar"添加到项目的类路径中。接着,通过Class.forName()方法加载并注册驱动,如`Class.forName("com.mysql.jdbc.Driver");` ...
- **`void addBatch(String sql)`**:将SQL语句添加到批量更新队列中,用于执行批量操作,提高数据处理效率。 - **`int[] executeBatch()`**:执行之前添加到批量更新队列中的所有SQL语句,返回每个语句的影响行数...
系统应考虑安全问题,如防止SQL注入、XSS攻击等,并进行性能优化,如使用PreparedStatement预编译SQL,减少数据库查询次数,使用缓存技术提高响应速度。 五、部署与运行 完成开发后,系统需在Web服务器(如Tomcat...
为了保证数据的安全性和一致性,系统可能会采用事务处理机制,特别是在涉及到多条记录修改时,如批量添加或删除学生。此外,为了防止SQL注入攻击,应避免在SQL语句中直接拼接用户输入,而是使用参数化查询。 在用户...
例如,使用PreparedStatement预编译SQL,避免SQL注入风险。 3. 查询功能:系统应提供多种查询方式,如按学号、姓名等关键字进行模糊查询,或者通过筛选条件(如性别、专业)进行精确查询。查询结果可以展示在JTable...
MySQL连接和查询可以通过JDBC的Connection、Statement或PreparedStatement对象实现。为了提高代码的可维护性和复用性,开发者可能还会使用MVC(Model-View-Controller)设计模式,将业务逻辑、视图展示和数据处理...
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 首先,让我们深入理解MyBatis的核心概念: 1. **SQL映射文件**:...
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 1. Mybatis 的优点: - 灵活性高:SQL 完全手写,可以编写...
- **安全性**:使用预编译的PreparedStatement防止SQL注入,设置合理的用户认证和授权机制。 - **性能优化**:合理设计索引以加快查询速度,避免全表扫描,考虑批量处理和缓存策略。 6. **测试与部署** - **单元...
- 使用预编译语句(PreparedStatement)提高安全性。 #### 六、进阶主题 1. **批处理**: - 批量插入或更新数据,提高性能。 - 使用ExecutorType.BATCH模式进行批处理。 2. **事务管理**: - 使用SqlSession...
MyBatis 是一个基于 Java 的持久层框架,它简化了对数据库的操作,通过 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 2. **MyBatis...