站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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 '轔&#65533;&#65533;鳆&#65533;囚/"篿躥X0ra寫枝襱.m铑阢蓺iK~駟&#65533;?M猲鏁&#65533;,/屈9OsìQ<盰枢矊&#65533;$夂' 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


↑返回目录
前一篇: 关于window.close()失效的问题
后一篇: 调用数据库的问题!!!各位老鸟都来顶一下吧,急啊。。。