各位大虾!!!
在Java中判断文档中数据和MySQL表中的数据重复,如果重复就不往里里面添加数据,代码应该怎么写啊!!!
通过多个字段判断
在Java中判断文档中数据和MySQL表中的数据重复,如果重复就不往里里面添加数据,代码应该怎么写啊!!!
通过多个字段判断
解决方案 »
- runtime调用shell命令 带参数以及环境变量的设置
- 关于ObjectOutputStream和ObjectInputStream进行文件读取的问题
- java问题 Random r = new Ranmom(47) 里面的这个47是什么意思? 谢谢!!
- 关于接口的问题询问
- 公司的笔试题,正则表达式
- 我学过几年C++,现在发现我对Java的面向对象和UML的建模比较感兴趣。
- JApplet中sql数据库访问的问题???
- getday方法不是返回今天是周几的吗?
- JAVA应用程序中使用jdbc-odbc bridge与jdbc有什么区别?它们在分发应用方面有什么区别
- 那位兄弟帮我讲解一下Enumeration到底是什么?
- 怎么new一个List<String>类型的组数
- Java定时器Timer问题
txt文档里的数据时不断增加的,以前的数据不会删除
数据量不是很大的话,用文档里数据当条件去数据库中查一把吧,存在的话就不做insert了
10 17:30:00 首都国际机场 20:00:00 江北国际机场 中国国航 CA4142 73G 50 40 全价 ¥1560 经济舱
11 18:30:00 首都国际机场 20:55:00 江北国际机场 中国国航 CA4144 73G 50 40 全价 ¥1560 经济舱
15 17:30:00 南苑机场 20:00:00 江北国际机场 中国联航 KN2285 738 50 40 8.0折 ¥1250 经济舱
16 17:30:00 首都国际机场 20:00:00 江北国际机场 中国国航 CA4142 73G 50 40 全价 ¥1560 经济舱
17 18:30:00 首都国际机场 20:55:00 江北国际机场 中国国航 CA4144 73G 50 40 全价 ¥1560 经济舱上面这种,除了id后面都重复
我的代码
while((str=br.readLine())!=null)
{
String[] array=str.split(",");//分隔符
PreparedStatement ps=conn.prepareStatement(sql);
for(int i=0;i<array.length;i++)
{
String strs = array[i].trim();//去掉字符串首尾空格
String[] listname=strs.split("=");
if(listname[0].equals("起飞时间"))
ps.setString(1,listname[1]);
else if(listname[0].equals("起飞机场"))
ps.setString(2,listname[1]);
else if(listname[0].equals("到达时间"))
ps.setString(3,listname[1]);
else if(listname[0].equals("到达机场"))
ps.setString(4,listname[1]);
else if(listname[0].equals("航空公司"))
ps.setString(5,listname[1]);
else if(listname[0].equals("航班号"))
ps.setString(6,listname[1]);
else if(listname[0].equals("机型"))
ps.setString(7,listname[1]);
else if(listname[0].equals("机建"))
ps.setString(8,listname[1]);
else if(listname[0].equals("燃油"))
ps.setString(9,listname[1]);
else if(listname[0].equals("折扣"))
ps.setString(10,listname[1]);
else if(listname[0].equals("票价"))
ps.setString(11,listname[1]);
else if(listname[0].equals("舱位"))
ps.setString(12,listname[1]);
if(listname[0].equals("编号"))
ps.setString(1,listname[1]);
}
ps.execute();
ps.close();
}
如果文本中字段排序和携参SQL中参数次序不一致,用If解决不了问题。如果次序一致,用if多余,总之用if是不对。
2、应在ps.execute和ps.close之间,对结果集做处理,看是否有数据返回。
if(listname[0].equals("编号"))
ps.setString(1,listname[1]);
}
如果是查询是否存在重复记录,不要这个。另外,你用于查询的语句和用于插入的语句(sql变量的值)应不同。
ps.setString(1,listname[1]);
}饿,不用看这个,这个我忘删了
起飞时间=17:30 , 起飞机场=南苑机场,到达时间=20:00,到达机场=江北国际机场,航空公司=中国联航,航班号=KN2285,机型=738,机建=50,燃油=40,折扣=8.0折,票价=¥1250,舱位=经济舱
1、修改insert SQL字符串为select字符串,查询参数一样用?定义出来
2、一样设各个字段(也就是查询参数),但不包含编号字段
3、用ps.executeQuery()而不是ps.execute()获得ResultSet,用next()方法判断是否有查询结果返回
4、如果next()为true表明有数据返回,则不需要做插入,否则正常做原先的插入谨慎一点的话,开个事务吧。
txt中的数据源要是可以控制一下重复的话,就不会这么麻烦了还希望楼主可以从另一个角度去考虑。PS:txt中除了id不是一个key啊,貌似剩余的其他属性才是key呢?
ps.setString(1, departure_time());
ps.setString(1, departure_airport());
ps.executeQuery();
ResultSet rs = ps.getResultSet();
if(rs.next()){
}
这种方法吗
while((str=br.readLine())!=null)
{
String[] array=str.split(",");//分隔符
PreparedStatement ps=conn.prepareStatement(sql);
for(int i=0;i<array.length;i++)
{
String strs = array[i].trim();//去掉字符串首尾空格
String[] listname=strs.split("=");
if(listname[0].equals("起飞时间"))
ps.setString(1,listname[1]);
else if(listname[0].equals("起飞机场"))
ps.setString(2,listname[1]);
else if(listname[0].equals("到达时间"))
ps.setString(3,listname[1]);
else if(listname[0].equals("到达机场"))
ps.setString(4,listname[1]);
else if(listname[0].equals("航空公司"))
ps.setString(5,listname[1]);
else if(listname[0].equals("航班号"))
ps.setString(6,listname[1]);
else if(listname[0].equals("机型"))
ps.setString(7,listname[1]);
else if(listname[0].equals("机建"))
ps.setString(8,listname[1]);
else if(listname[0].equals("燃油"))
ps.setString(9,listname[1]);
else if(listname[0].equals("折扣"))
ps.setString(10,listname[1]);
else if(listname[0].equals("票价"))
ps.setString(11,listname[1]);
else if(listname[0].equals("舱位"))
ps.setString(12,listname[1]);
}
ps.executeQuery();
ResultSet rs = ps.getResultSet();
while(rs.next())
{
} ps.close();
}
conn.close();
ResultSet rs = ps.executeQuery();
if (!rs.next()){
//做插入
}