PreparedStatement.executeUpdate() 不影响数据库
Posted
技术标签:
【中文标题】PreparedStatement.executeUpdate() 不影响数据库【英文标题】:PreparedStatement.executeUpdate() not affecting database 【发布时间】:2018-01-05 20:15:51 【问题描述】:我想将值插入到数据库表中。该表有两列:id 和 image。 id 是自增的 int,图像是 blob 类型。这是我的代码:
try
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, userName, password);
File imgfile = new File(request.getParameter("img"));
InputStream fin = new FileInputStream(imgfile);
PreparedStatement pre = con.prepareStatement("insert into pictures (image) values(?)");
pre.setBinaryStream(1, fin, imgfile.length());
int done=pre.executeUpdate();
catch(SQLException | ClassNotFoundException e)
e.printStackTrace();
我检查了数据库,没有插入任何内容。服务器输出:
com.mysql.jdbc.MysqlDataTruncation:数据截断:数据太长 第 1 行的“图像”列
【问题讨论】:
很确定SQLException
被你提出并忽略了。
改了发现异常
你是如何定义列的?是一团吗?
它是一个 blob,列大小 65535,如果有帮助的话
数据太长 - 可能意味着您对 column1 的定义不正确。
【参考方案1】:
我修好了。我将image
列的数据类型从blob
更改为longblob
谢谢。
【讨论】:
以上是关于PreparedStatement.executeUpdate() 不影响数据库的主要内容,如果未能解决你的问题,请参考以下文章