eonn 半仙
注册时间: 2006-10-10 文章: 1
|
发表于: Sat 2010-02-06 13:57:09 发表主题: 在做爬虫,问个JDBC Mysql的问题! |
|
|
用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'插入不了。
怎么能够当前面一条插入失败后,还能成功执行下一条语句呀? |
|