当前位置: 首页 > 编程笔记 >

JDBC程序更新数据库中记录的方法

萧嘉茂
2023-03-14
本文向大家介绍JDBC程序更新数据库中记录的方法,包括了JDBC程序更新数据库中记录的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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