本文实例讲述了JDBC程序更新数据库中记录的方法。分享给大家供大家参考,具体如下:
使用JDBC程序(Eclipse、MyEclipse)更新数据库(MySql)中的记录时可以只修改记录的一个字段或几个字段,具体方法为可以加入如下被注释代码(前提是修改之前可以从数据库中得到该条记录)以user表为例
public class UserDaoJdbcImpl implements UserDao { public void update(User u) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); String sql = "update user set name = ?, birthday = ?, money = ? where id=?"; ps = conn.prepareStatement(sql); // 首先得到该记录 User user = getUserById(u.getId()); // 判断字段是否需要修改 if (u.getName() == null) { u.setName(user.getName()); } if (u.getBirthday() == null) { u.setBirthday(user.getBirthday()); } if (u.getMoney() == 0) { u.setMoney(user.getMoney()); } ps.setString(1, u.getName()); ps.setDate(2, new java.sql.Date(u.getBirthday().getTime())); ps.setDouble(3, u.getMoney()); ps.setInt(4, u.getId()); int i = ps.executeUpdate(); System.out.println("成功向user表中更新" + i + "条记录"); } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtils.free(rs, ps, conn); } } public User getUserById(int id) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; User user = null; try { conn = JdbcUtils.getConnection(); String sql = "select * from user where id = ?"; ps = conn.prepareStatement(sql); ps.setInt(1, id); rs = ps.executeQuery(); if (rs.next()) { user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setBirthday(rs.getDate("birthday")); user.setMoney(rs.getDouble("money")); } } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtils.free(rs, ps, conn); } return user; } }
调用:
public static void main(String[] args) { UserDao ud = new UserDaoJdbcImpl(); User user = new User(); user.setId(9); user.setName("老师");//只修改name和birthday属性 Date d = null; try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); d = sdf.parse("1999-9-14"); } catch (ParseException e) { e.printStackTrace(); } user.setBirthday(d); //user.setMoney(1234);不修改money属性 ud.update(user); }
希望本文所述对大家Java程序设计有所帮助。
如何从java中知道在调用更新查询时记录是否被更新。我曾尝试过executeUpdate()中的返回类型int,但每当执行查询时,它都会显示1。也就是说,如果记录更改或不更改,它将返回值
问题内容: 这段代码正在更新薪水为13000的所有记录。 相反,我想将薪水为1300的记录更新为值13000。 您能告诉我我在哪里出错吗? 我正在使用隐式游标访问记录.. 对于每个记录,我正在检查该记录的sal值.. 如果特定记录中的薪水值是1500,我想将其更新为15000。 问题答案: 只要您可以使用一条语句进行更新,就应该这样做,而不要使用循环。这样,您将获得非常巨大的性能提升。或者反之,循
这是我正在接收的数据,如果阵列中不存在id,则希望添加新记录,如果阵列中没有id,则还希望更新记录 我的模型:课堂课程 课堂主题 类用户 这是通过PostMan从Rails API接收的数组[{"title":"Topic Name","path_url":"https://resource-asws-path-url" }, { "id": 2311,"title":"Topic Name","
本文向大家介绍在Java程序中使用数据库的新方法,包括了在Java程序中使用数据库的新方法的使用技巧和注意事项,需要的朋友参考一下 Java 8终于到来了! 经过几年的等待, java程序员终于能在java中得到函数式编程的支持了. 函数式编程的支持能流程化现有的代码并且为java提供强大的能力.在这些新特性中最瞩目的是java程序员对数据库的操作方式.函数式编程带来了令人激动的简便高效的数据库
问题内容: 我已经使用.NET创建了数据访问层。在任何更新数据库记录的地方,我都使用sql来实现以下目的: 更新客户设置FirstName =:FirstName,LastName =:LastName,Address1 =:Address1,Address2=:Address2,.... etc 这意味着即使只更改了一个字段,记录中的每个字段也会更新。一位同事对此表示质疑,他说我们仅应在字段已更
尝试站点parse.com将数据加载到数据库中 类DBHelper扩展了SQLiteOpenHelper{ 在模拟器上获取 java.lang.IllegalStateExcema:尝试重新打开已关闭的对象:SQLiteDatabase: /data/data/com.project.test/databases/myDBandroid.database.sqlite.SQLiteClosable