众所周知,hibernate里面有一个自带的方法saveOrUpdate非常好用,本来我想找找在JDBC里面有没有类似的方法,但是好像没有发现,于是就需要自己用其他的方法实现。
首先应该要判断这条记录在数据库里面存不存在,如果存在那么就是更新,如果不存在,才是插入。
首先是JDBC连接数据库:
private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
private static String user = "sa";
private static String password = "123456";
private static Connection conn = null;
private static ResultSet rs = null;
private static PreparedStatement ps = null;
public static ResultSet excuteSql(String sql)
throws ClassNotFoundException, SQLException {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, user, password);
ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = ps.executeQuery();
return rs;
}
然后我们根据比较限制的查询条件查找记录数,如果只有一条记录,那证明已经存在,如果记录为空,那么证明记录不存在,需要插入。
public static boolean isExist(int aa, int bb,
String cc) throws ClassNotFoundException, SQLException {
String str = "select* from ttest where auditid=" + aa
+ " and rncid=" + bb + " and rncname='" + cc + "'";
ResultSet rs1 = null;
rs1 = excuteSql(str);
rs1.last();
int rowCount = rs1.getRow();
if (rowCount == 0) {
return false;
}
if (rowCount == 1) {
return true;
}
return false;
}
当然,如果每次都要有多条记录,而可能其中一些已经存在,另外一些不存在,这就要在for循环里面判断了。假设总共有5条记录,最好的方法就是将update语句和insert语句写在一个StringBuffer里面,然后一起执行,这样会好很多。
for (int i = 0; i < bb.length; i++) {
boolean flag = false;
try {
flag = isExist(aa,bb[i],cc);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
if (flag) {
updateStr = update(aa,bb[i], cc,dd);
sqlsf.append(updateStr);
} else {
insertStr = insert(aa,bb[i], cc,dd);
sqlsf.append(insertStr);
}
}
try {
sql(sqlsf.toString());
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
分享到:
相关推荐
在这个项目中,我们使用JDBC(Java Database Connectivity)来实现一个基本的CRM系统,涵盖了CRUD(Create、Read、Update、Delete)操作,同时运用了时间控件、字符截取和分页等技术,以提供更加高效和用户友好的...
Servlet+jdbc 网上商城购物车程序是一个基于Java Web技术实现的电子商务应用程序,它主要利用Servlet进行服务器端处理,并通过JDBC(Java Database Connectivity)与数据库交互,以实现用户在虚拟商城中的商品选择、...
电话本管理系统jdbc是一个基于Java编程语言的数据库管理应用程序,它实现了对电话簿数据的基本操作,如添加、删除、修改和查询。在这个系统中,DAO(Data Access Object)模式被用作与数据库交互的核心机制,提供了...
JDBC(Java Database Connectivity)是Java中用于访问数据库的标准API,提供了连接、查询、插入、更新和删除数据的能力。这个"Struts2-Crud+JdbcDemo"项目是一个基础的学习示例,涵盖了如何使用Struts2和JDBC进行...
【标题】:“jsp+servlet+jdbc实现的课程管理系统”是一个基于Java技术的Web应用程序,用于管理课程相关的数据。它利用了JavaServer Pages (JSP)、Servlet和Java Database Connectivity (JDBC) 这些核心的Java Web...
`test_jdbc.java`可能包含一个名为`TestJdbc`的类,这个类通常会实现上述的JDBC连接步骤,并可能包含一些额外的功能,如插入、更新、删除数据,或者执行存储过程。测试类可能会包含以下方法: - `void ...
在这个项目中,通过JDBC编写SQL语句,可以实现对数据库中数据的插入、更新、删除以及查询。例如,使用PreparedStatement预编译SQL语句,可以提高效率并防止SQL注入攻击。 6. **模糊查询**:模糊查询允许用户使用...
3. 结果集处理:封装结果集的遍历和转换,将数据库记录转化为Java对象,或者将Java对象转化为数据库记录。 4. 异常处理:统一异常处理机制,捕获并包装JDBC异常,简化错误处理。 5. 事务管理:提供事务控制接口,...
在本实例中,JDBC被用来连接到数据库,执行查询和更新操作,如用户登录验证时的用户名和密码查找,或者删除操作时的数据移除。 Servlet是Java Web开发中的服务器端组件,用于扩展服务器的功能。在本项目中,Servlet...
【标题】:“案例-jsp+jdbc实现留言管理程序”是一个基于Java Web技术的项目,它利用JSP(JavaServer Pages)和JDBC(Java Database Connectivity)来构建一个用于管理用户留言的应用程序。在这个系统中,用户可以...
4. **删除(Delete)**:DELETE语句用于移除数据库中的记录。同样通过`PreparedStatement`的`executeUpdate()`方法执行。 ### 防止SQL注入 SQL注入是一种常见的网络安全威胁,攻击者通过输入恶意的SQL代码来获取...
**统计在线人数** 可能通过记录用户的session活动来实现。当用户打开网站时创建session,退出时销毁,或者超时自动失效。通过统计当前活跃的session数量,可以近似得到在线用户数。 这个新闻管理系统展示了Java Web...
同时,也能删除不再需要的记录或者更新已有的信息。这种功能在日常管理中非常实用,便于及时维护和更新住宿数据。 “几乎所有关键字的查询”表示系统具有强大的查询能力,用户可以根据多种条件进行筛选,比如学生...
3. **执行SQL语句**:一旦建立了连接,你可以创建一个`Statement`或`PreparedStatement`对象来执行SQL查询、插入、更新或删除操作。例如,创建一个`Statement`并执行SELECT查询: ```java Statement stmt = conn....
通过JDBC,开发者可以执行SQL查询、插入、更新和删除数据,以及处理结果集。Neo4j-JDBC驱动程序实现了这个接口,使得我们可以使用熟悉的Java编程方式来操作图形数据。 在使用"neo4j-jdbc相关jar"时,你需要将包含的...
Java项目中的用户JDBC操作是Java开发者经常遇到的任务,它涉及到数据库连接、查询、更新以及关闭资源等步骤。在这个项目中,"java project user jdbc"很可能是实现了一个用户管理的系统,利用Java Database ...
此外,系统还包含了管理员界面,管理员可以管理论坛的分类、帖子以及用户账户,这通常涉及到更复杂的数据库操作,如查询、更新和删除记录。 JSP是Java的一种视图技术,它允许在服务器端生成HTML或其他类型的文档。...
3. **执行SQL语句**:通过`Statement`或`PreparedStatement`对象执行SQL查询、插入、更新和删除操作。 4. **结果集处理**:使用`ResultSet`对象来获取查询结果,遍历并处理返回的数据。 5. **分页查询**:为了实现...
它允许Java开发者执行SQL语句,实现对数据库的连接、查询、更新和删除操作。在OracleOaec-GUI_JDBC项目中,开发者可能使用了`java.sql.Connection`、`Statement`、`PreparedStatement`和`ResultSet`等核心接口来操作...