用java将一条数据插入oracle,需要查看原数据库中是否有此条记录

例如(李明 男 18 唱歌)首先要用“李明”搜索oracle数据库中是否存在叫李明的记录,若没有则将之插入。谢谢帮忙写下搜索和插入代码

需要用两个类来实现,DB类用来加载数据库驱动,建立数据库连接,Opdb类用来查询和插入数据
OPDB类我只写了测试用的main方法,需要调用DB类来做查询和插入数据的操作
OPDB.java的源码如下

public class Opdb {
public static void main(String[] args) {
DB db = new DB();
String sql = "select * from user_info where user_name = '李明'";
db.doPstm(sql);//查询数据库中是否存在李明的记录
if(db.geRs()==null)//如果查询的结果为空,则插入数据{
String sql2 = "inset into user_info values("李明","男","18","唱歌")";
db.doPstm(sql2);//执行插入的sql语句
}
db.close;//关闭数据库连接
}

}

DB.java的源代码如下

package com.yxq.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DB {
private Connection con;
private PreparedStatement pstm;
private String user="username";
private String password="password";
private String className="oracle.jdbc.driver.OracleDriver";
private String url="jdbc:oracle:thin:@localhost:orcl";

public DB(){
try{
Class.forName(className);
}catch(ClassNotFoundException e){
System.out.println("加载数据库驱动失败!");
e.printStackTrace();
}
}

/**创建数据库连接*/
public Connection getCon(){
try {
con=DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
System.out.println("创建数据库连接失败!");
con=null;
e.printStackTrace();
}
return con;
}

public void doPstm(String sql,Object[] params){
if(sql!=null&&!sql.equals("")){
if(params==null)
params=new Object[0];

getCon();
if(con!=null){
try{
System.out.println(sql);
pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
for(int i=0;i<params.length;i++){
pstm.setObject(i+1,params[i]);
}
pstm.execute();
}catch(SQLException e){
System.out.println("doPstm()方法出错!");
e.printStackTrace();
}
}
}
}

public ResultSet getRs() throws SQLException{
return pstm.getResultSet();
}
public int getCount() throws SQLException{
return pstm.getUpdateCount();
}
public void closed(){
try{
if(pstm!=null)
pstm.close();
}catch(SQLException e){
System.out.println("关闭pstm对象失败!");
e.printStackTrace();
}
try{
if(con!=null){
con.close();
}
}catch(SQLException e){
System.out.println("关闭con对象失败!");
e.printStackTrace();
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-31
你这个就不是一个SQL语句能搞定的了!而且要用JAVA的代码来判断 JAVA刚刚好不会 爱莫能助!

用java将一条数据插入oracle,需要查看原数据库中是否有此条记录
public static void main(String[] args) { DB db = new DB();String sql = "select * from user_info where user_name = '李明'";db.doPstm(sql);\/\/查询数据库中是否存在李明的记录 if(db.geRs()==null)\/\/如果查询的结果为空,则插入数据{ String sql2 = "inset into user_info va...

一个事务中先插入数据,然后再查询所有数据,能查到刚才的记录吗
先插入再查询在事务内部的SELECT语句可以查询到数据,但是回滚后,不能查询到数据。先删除再查询。在同一个事务中,数据需要保证一致性,也就是说,在当前的事务中,删除了就是看不到了,插入了就是多了一条数据。但这些操作都是在当前事务内部的。对于外界是隔离的。如果我们开启事务插入一条数据,还...

在Java中,如何检测一个数组中是否包含某一个数据?
1、使用for循环 publicstaticbooleanuseLoop(String[]arr,StringtargetValue){ for(Strings:arr){ if(s.equals(targetValue))returntrue;} returnfalse;} \/iknow-pic.cdn.bcebos.com\/d62a6059252dd42a816ca8e00e3b5bb5c9eab810"target="_blank"title="点击查看大图"class="ikqb_img_alink">\/iknow...

oracle中执行插入语句(假设插入大量数据)过程中如何检查已经插入了多少...
可以在sql语句中每隔2000行,放一个dbms_output.put_line(‘已经插入2000行’);2. 方案2 可以在 sql中 每隔2000行 ,加入一句commit;然后在 sql执行过程中,不断查询insert into 的表中的记录数,也可知道进度;

为什么Oracle只能查询出一条记录?
你数据库里有多少数据?如果是多条数据..建议你创建一个entity实体类..然后循环将数据插入到一个 实体类类型的list中 返回一个list 如果你要在控制台看到 数据 就在 循环中输出就可以了.新手..希望对你有帮助

java程序异常处理写入oracle数据库表中记录的基类 大家有做过的没...
一般的处理是java的异常处理写入log文件中,数据库的异常写入表中 如果要把java的异常写入表中,可以定义个专门处理异常的类,负责连接数据库并将异常信息插入表中,与普通的连接数据库没有两样的

oracle 某个字段的结果是一个集合,怎么知道这个结果中是否有某个值
PL\/SQL中是没有数组的概念,他的集合数据类型和数组是相似的,所以可以用ARRAY来解决问题。第一步:创建你所需的ARRAY类型 Create Type varray_answer as varray(10) of varchar2(50);第二步:把你的sf_split_string函数返回的类型设置为varray_answer 第三步:select era_id, us_id, sf_split_...

Java中写插入语句向数据库中的表插入??
实现思路:首先oracle数据库中的插入数据可以用insert语句,之后即可通过java方式进行插入,如:String userinfo="insert into userinfo VALUES("+"'"+userD+"',sysdate"+")";\/\/之后执行插库操作。备注,实际在数据库中插入语句如下 sql:insert into userinfo values('123',sysdate);...

如何使用java对oracle数据库进行增删查改?
String url="jdbc:oracle:thin:@服务器ip地址:端口号:数据库名字";String user="用户名";String password="密码";String str="INSERT INTO ZZZ_2 VALUES('041110018','JHDK')";con = java.sql.DriverManager.getConnection(url,user,password);\/\/ 创建状态 stmt = con.createStatement();\/\/ 执行...

在java应用程序中怎样得到oracle数据库错误信息
oracle的存储过程可以实现,但是对于你这种需求那样实现太麻烦了。你可以试试在你java里面一条一条更新,有错误则报错,这样你可以知道更新到第几条了。但是这样效率很低。

相似回答