ArrayList aSql =new ArrayList();//装SQL语句
String sSql ="select a.Consignee_Name,a.distribution_type,b.order_no from kt_TRACKING_2 as a inner join TARCH_ORDER as b on a.tarch_no =b.tarch_no where distribution_type=? and Consignee_Name=? and CREATE_DATE like '"+sDate+"%'"; //sDate是日期,可变的
PreparedStatement pst =oConn.prepareStatement(sSql);//oConn 是自定义的静态类,用来连接数据库
for(int i=0;i<saConsignenNo.length;i++)
{
/*saDistribution_type的长度和saConsignenNo的长度是一样的*/
pst.setString(1,saDistribution_type[i]);//saDistribution_type是事先定义好的数组
pst.setString(2,saConsignenNo[i]);//saConsignenNo是事先定义好的数组
oResultSet =pst.executeQuery();//oResultSet是自定义的,功能和ResultSet一样的
if(!oResultSet.next())
{
String sNo =String.valueOf(SysUtil.getSerialNo("kt_TRACKING_2.TARCH_NO"));
String sSqls ="insert into kt_TRACKING_2 (TARCH_NO,Consignee_Name,CREATE_DATE,distribution_type) values ('"
+sNo+"','"+saConsignenNo[i]+"','"+sDate+"','"+saDistribution_type[i]+"')";
aSql.add(sSqls);
}}
Dao.updateBatch(aSql,oConn);//Dao是自定义的类,批量执行SQL 语句用
上面的代码是想循环执行查询,将两个数组的值作为条件,然后判断是否有值返回,若有值返回表示数据库有相同的值。则不予理会,若next()方法没有执行,表示没有值返回,则将当前两个数组中的值添加到数据库中。
但是,现在每次执行的时候,数据库中有相同的值也往里面添加,实在是很奇怪,请各位高手帮忙看一下这段代码,敬请指出问题所在。非常感谢!
String sSql ="select a.Consignee_Name,a.distribution_type,b.order_no from kt_TRACKING_2 as a inner join TARCH_ORDER as b on a.tarch_no =b.tarch_no where distribution_type=? and Consignee_Name=? and CREATE_DATE like '"+sDate+"%'"; //sDate是日期,可变的
PreparedStatement pst =oConn.prepareStatement(sSql);//oConn 是自定义的静态类,用来连接数据库
for(int i=0;i<saConsignenNo.length;i++)
{
/*saDistribution_type的长度和saConsignenNo的长度是一样的*/
pst.setString(1,saDistribution_type[i]);//saDistribution_type是事先定义好的数组
pst.setString(2,saConsignenNo[i]);//saConsignenNo是事先定义好的数组
oResultSet =pst.executeQuery();//oResultSet是自定义的,功能和ResultSet一样的
if(!oResultSet.next())
{
String sNo =String.valueOf(SysUtil.getSerialNo("kt_TRACKING_2.TARCH_NO"));
String sSqls ="insert into kt_TRACKING_2 (TARCH_NO,Consignee_Name,CREATE_DATE,distribution_type) values ('"
+sNo+"','"+saConsignenNo[i]+"','"+sDate+"','"+saDistribution_type[i]+"')";
aSql.add(sSqls);
}}
Dao.updateBatch(aSql,oConn);//Dao是自定义的类,批量执行SQL 语句用
上面的代码是想循环执行查询,将两个数组的值作为条件,然后判断是否有值返回,若有值返回表示数据库有相同的值。则不予理会,若next()方法没有执行,表示没有值返回,则将当前两个数组中的值添加到数据库中。
但是,现在每次执行的时候,数据库中有相同的值也往里面添加,实在是很奇怪,请各位高手帮忙看一下这段代码,敬请指出问题所在。非常感谢!
解决方案 »
- 有没有人知道这个是什么意思Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
- 高分 --java面试题
- 欢迎到淘皮克计算机应用社区
- 使用SocketChannel.finishConnect()出错,各位能帮我看看是什么问题吗?
- 大家谁有JAVA环境,帮我看个代码
- 求解小程序...
- 请问,如果在Jbuilder中实现两个窗口的互相调用?
- 数值转换问题?
- 请大家帮忙看一下Swing窗口的修改方法.
- 龙通科技面试题之:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,再从他的下一个人重新报数,最后留下的是原来第几号的那位
- 弹出菜单,为何阴影总是不消失
- 请问高手(别以为很简单!!),JMenuItem中怎样设置一个键为快捷键啊,比如F2,delete,望指教!
在if前打印一次oResultSet.next()
import java.sql.*;
public class TestJDBC{
public static void main(String[] args){
Connection con = null;
String DriverName = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/photo?useUnicode=true&characterEncoding=utf-8";
String user = "root" ;
String password = "root";
String fullURL = URL+"&user="+user+"&password="+password; try{
Class.forName(DriverName);
}catch(Exception e){
e.printStackTrace();
}
try{
con = DriverManager.getConnection(fullURL);
}catch(Exception e){
e.printStackTrace();
}
try{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from entity1 where 1=1");
//System.out.println(rs.next());
if (!rs.next()){
System.out.println("dddd");
} rs = stmt.executeQuery("select * from entity1 where 1=2");
//System.out.println(rs.next());
if (!rs.next()){
System.out.println("dddd");
}
con.close();
}catch(Exception e){
e.printStackTrace();
} }
};
非常感谢 lydvqq(碧水情缘♀黑哥)和didoleo(冷月无声)的指点。谢谢!