用jdbc插入数据的时候,保证url字段里的数据唯一表的结构是:
CREATE TABLE `link` (
  `id` int(11) NOT NULL auto_increment,
  `url` varchar(255) default NULL,
  `title` varchar(255) default NULL,
  `creep` int(11) default NULL,
  `crawl` int(11) default NULL,
  `time` datetime default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `url` (`url`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;程序代码:
   ...
   Statement stmt = conn.createStatement();   
   String sql1 = "INSERT INTO `link` (`url`,`title`,`creep`)VALUES ('1www.510baby.com', '510baby', '0')";
   stmt.execute(sql1);
   String sql2 = "INSERT INTO `link` (`url`,`title`,`creep`)VALUES ('2www.510baby.com', '510baby', '0')";
   stmt.execute(sql2);
   stmt.close(); 
   ...
当表里没有'1www.510baby.com'和'2www.510baby.com'数据的时候,上面的执行都可以成功   ...
   Statement stmt = conn.createStatement();   
   String sql3 = "INSERT INTO `link` (`url`,`title`,`creep`)VALUES ('3www.510baby.com', '510baby', '0')";
   stmt.execute(sql1);
   String sql4 = "INSERT INTO `link` (`url`,`title`,`creep`)VALUES ('2www.510baby.com', '510baby', '0')";
   stmt.execute(sql2);
   stmt.close(); 
   ...
当再执行上面的语句时,'3www.510baby.com'能插入,'2www.510baby.com'不能插入但是当
   ...
   Statement stmt = conn.createStatement();   
   String sql5 = "INSERT INTO `link` (`url`,`title`,`creep`)VALUES ('3www.510baby.com', '510baby', '0')";
   stmt.execute(sql1);
   String sql6 = "INSERT INTO `link` (`url`,`title`,`creep`)VALUES ('4www.510baby.com', '510baby', '0')";
   stmt.execute(sql2);
   stmt.close(); 
再执行上面语句的时候,'4www.510baby.com'插入不了。
怎么能够当前面一条插入失败后,还能成功执行下一条语句呀?

解决方案 »

  1.   

    '3www.510baby.com'出错了,异常抛出了,所以'4www.510baby.com'插入不了。
    LZ试试单独插入'4www.510baby.com'是否能成功?
      

  2.   

     String sql6 = "INSERT INTO `link` (`url`,`title`,`creep`)VALUES ('4www.510baby.com', '510baby', '0')"; 
      stmt.execute(sql2); 
      stmt.close(); 
    像这种语句应该单独执行,也就是一次只插入一条记录,你那样中间一个失败了,抛出异常当然后面的就不会执行了
      

  3.   

    用bacthSQL先把所有的语句都放在一个批处理里面
    然后一次性全部提交
      

  4.   

    异常跳到catch里去了,下面一句不会执行,先一次性判断所有要插入的数据是不是唯一,不是再操作。
    lz试试插入两条一样的,数据库里面没有的数据试试-_-!