java.sql.SQLException: Data truncated for column ‘xxxxx‘ at row 1

java.sql.SQLException: Data truncated for column ‘xxxxx’ at row 1

大意为:数据截断:第1行的“ publish_year”列的值超出范围

产生异常原因:

该异常通常为Java中的数据类型与mysql数据库的类型不一致导致。

解决方法:

检测相应的类型并修改即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个比较完整的网络爬虫程序开发要求,需要涉及到多个方面的知识和技能。以下是一个简单的实现思路和示例代码,供参考: 1. 网页内容获取 首先需要使用 Jsoup 连接目标网站,并获取网页内容。可以通过设置请求头、超时等参数来提高程序的稳定性和可靠性。以下是一个简单的示例代码: ``` import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class WebPageDownloader { public static Document download(String url) throws IOException { return Jsoup.connect(url) .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3") .timeout(30000) .get(); } } ``` 以上代码使用 Jsoup 连接指定的网站,并设置了请求头和超时时间。 2. 网页内容解析 使用 Jsoup 的选择器来解析网页内容,可以根据 CSS 样式表选择器来选择需要解析的元素。以下是一个简单的示例代码: ``` import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class WebPageParser { public static void parse(Document doc) { // 解析 ul-li 列表 Elements ulList = doc.select("ul.list > li"); for (Element li : ulList) { String title = li.select("a.title").text(); String link = li.select("a.title").attr("href"); System.out.println(title + " -> " + link); } // 解析表格数据 Element table = doc.select("table.data").first(); Elements rows = table.select("tr"); for (Element row : rows) { Elements cells = row.select("td"); for (Element cell : cells) { System.out.print(cell.text() + "\t"); } System.out.println(); } } } ``` 以上代码使用 Jsoup 的选择器来选择 ul-li 列表和表格数据,并解析其内容。 3. 网页内容存储 将网页中的图片和列表数据存储到磁盘和 MySQL 数据库中。可以使用 Java I/O 和 JDBC 来实现。以下是一个简单的示例代码: ``` import org.jsoup.nodes.Document; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class WebPageSaver { public static void save(Document doc) throws IOException, SQLException { // 存储图片 Elements images = doc.select("img"); for (Element image : images) { String src = image.attr("src"); String fileName = src.substring(src.lastIndexOf("/") + 1); URL url = new URL(src); InputStream is = url.openStream(); OutputStream os = new FileOutputStream("images/" + fileName); byte[] buffer = new byte[1024]; int length; while ((length = is.read(buffer)) != -1) { os.write(buffer, 0, length); } is.close(); os.close(); } // 存储列表数据 Element table = doc.select("table.data").first(); Elements rows = table.select("tr"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password"); PreparedStatement ps = conn.prepareStatement("INSERT INTO data VALUES (?, ?, ?)"); for (Element row : rows) { Elements cells = row.select("td"); String col1 = cells.get(0).text(); String col2 = cells.get(1).text(); String col3 = cells.get(2).text(); ps.setString(1, col1); ps.setString(2, col2); ps.setString(3, col3); ps.executeUpdate(); } ps.close(); conn.close(); } } ``` 以上代码将图片存储到 images 目录下,并将列表数据存储到 MySQL 数据库中。 4. 存储内容查询 开发一个 Web 页面,用于查询和展示网络爬虫程序采集到的数据。可以使用 Spring MVC 和 JSP 来实现。以下是一个简单的示例代码: ``` @Controller public class DataController { @Autowired private DataService dataService; @GetMapping("/data") public String data(Model model) { List<Data> dataList = dataService.getAllData(); model.addAttribute("dataList", dataList); return "data"; } } @Service public class DataService { @Autowired private DataRepository dataRepository; public List<Data> getAllData() { return dataRepository.findAll(); } } @Repository public interface DataRepository extends JpaRepository<Data, Long> { } @Entity public class Data { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String col1; private String col2; private String col3; // getters and setters } ``` 以上代码使用 Spring MVC 和 JSP 来开发一个查询页面,其中 DataController 负责处理请求,DataService 负责查询数据,DataRepository 使用 Spring Data JPA 来操作数据库,Data 是一个实体类,对应数据库中的表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值