当前页面: 开发资料首页 → JSP 专题 → jsp图片写入MySql数据库的问题
jsp图片写入MySql数据库的问题
摘要: jsp图片写入MySql数据库的问题
mysql 的建的表
create table abc (a int,b blog,c char(2));
jsp页面代码
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<%@ page import="Model.DataAccess.DBBean"%>
<%
Connection con=DBBean.getConnection();
//插入数据库
String sql="insert into abc (a,c,b) values (?,?,?)";
//转换成file格式
File filename=new File("F://Tomcat//webapps//EP//12.jpg");
//将文件的长度读出,并转换成Long型
long l1=filename.length();
int l2=(int)l1;
//以流的格式赋值
FileInputStream fis=new FileInputStream(filename);
PreparedStatement pstm =con.prepareStatement(sql);
pstm.setInt(1,1);
pstm.setString(2,"d");
//pstm.setBinaryStream(3,fis,l2); 这种方法试了不行,换下面的也不行
pstm.setBinaryStream(3,fis,fis.available());
pstm.executeUpdate();
pstm.close();
fis.close();
DBBean.close(con);
out.println("ok!!!");
%>
//出现的异常
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '轔��鳆�囚/"篿躥X0ra寫枝襱.m铑阢蓺iK~駟�?M猲鏁�,/屈9OsìQ<盰枢矊�$夂' at line 1
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2851)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1534)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1625)
com.mysql.jdbc.Connection.execSQL(Connection.java:2297)
com.mysql.jdbc.Connection.execSQL(Connection.java:2226)
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1812)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1906)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1831)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1693)
org.apache.jsp._123_jsp._jspService(_123_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:123)
各路大侠,指点一下啊
搞了一天都没搞出来,反正不插入图片就正常,一插入图片就挂了。
up
---------------------------------------------------------------------------------------------
腰缠70元到月入近10万
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=453
IT工程师 毕业4年我年薪涨到30万
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=511
26岁青年坐拥千万域名资产 从小玩家变成CEO
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=515
程序员的酸甜苦辣:告别Coding
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=341
从月薪3500到700万(一)
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=170
网络草根月赚3000的十种方法
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=517
如果我是女的 我肯定不会嫁给做网站的
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=512
往mysql里插入Clob字段
【示例】
import java.io.*;
import java.sql.*;
public class DBTest {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/upload?useUnicode=true&characterEncoding=Big5";
String user = "caterpillar";
String password = "123456";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
File file = new File("./logo_phpbb.jpg");
int length = (int) file.length();
InputStream fin = new FileInputStream(file);
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO files VALUES(?, ?)");
pstmt.setString(1, "Logo");
pstmt.setBinaryStream (2, fin, length);
pstmt.executeUpdate();
pstmt.clearParameters();
pstmt.close();
fin.close();
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM files");
result.next();
String description = result.getString(1);
Blob blob = result.getBlob(2);
System.out.println("描述:" + description);
FileOutputStream fout = new FileOutputStream("./logo_phpbb_2.jpg");
fout.write(blob.getBytes(1, (int)blob.length()));
fout.flush();
fout.close();
stmt.close();
conn.close();
}
catch(ClassNotFoundException e) {
System.out.println("找不到驱动");
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
看不出楼上的代码和我的有什么不同啊。
哦,我的那张表提问的时候打错了。
create table abc (a int ,b blob ,c char(2));
blob打错成blog了。
不过这只是贴子打错了,机子里的没错。
异常是Sql异常,好奇怪。
mscf(扎西特勒)的clob字段类型是么?
up
---------------------------------------------------------------------------------------------
腰缠70元到月入近10万
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=453
IT工程师 毕业4年我年薪涨到30万
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=511
26岁青年坐拥千万域名资产 从小玩家变成CEO
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=515
程序员的酸甜苦辣:告别Coding
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=341
从月薪3500到700万(一)
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=170
网络草根月赚3000的十种方法
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=517
如果我是女的 我肯定不会嫁给做网站的
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=512
路过,友情up...
路过,友情UP
--------------------------------------------------------------------------------
JSP开发群:8137004
由于群早满了,申请加入群的要求是基本天天在线,并且经常发言者(因为不定时清理),并注明csdn.
楼主,我的建议是不要直接在数据库里放图片,放图片的路径比较好,把本地的图片上传到服务器,把服务器上的路径放到数据库里,
你存放的顺序都不对啊。。。。。第二个是图片。
abc表结构
可以考虑在数据库中存放图片URL
mark