当前位置: 技术问答>java相关
急救:java.lang.NullPointerException jspsmart测试图片直接上传存到sqlserver数据库
来源: 互联网 发布时间:2015-09-19
本文导语: 我用jspsmart测试图片直接上传存到sqlserver数据库,过程如下: 一 建表 CREATE TABLE TFILES (fID INT NOT NULL, finame VARCHAR(255), FI image, PRIMARY KEY (fID)); INSERT into TFILES (fID, FINAME, FI) VALUES (1,"sample",null); 二 smaple4.htm ...
我用jspsmart测试图片直接上传存到sqlserver数据库,过程如下:
一 建表
CREATE TABLE TFILES (fID INT NOT NULL, finame VARCHAR(255), FI image,
PRIMARY KEY (fID));
INSERT into TFILES (fID, FINAME, FI) VALUES (1,"sample",null);
二 smaple4.htm
jspSmartUpload : Sample 4
三 上传smaple4.jsp
jspSmartUpload : Sample 4
执行时异常:
An error occurs : java.lang.NullPointerException 0 file(s) uploaded in the
database.
为什么?另外我在用下面的代码直接保村服务器上的文件时也提示该错误
//图片写入数据库函数
//sql 为数据库的SQL语句
//filename 为包含完整路径的文件名
//返回结果为字符型,True为成功,False为失败
public boolean WriteInMySql(String sql, String filename)
{
boolean writeReturn = false;
try
{
//定义文件流对象fileStream
FileInputStream fileInStream = null;
PreparedStatement insert;
int bytes = 0;
insert = conn.prepareStatement(sql);
if(filename != null && !filename.equals("") && sql != null &&
!sql.equals(""))
{
try
{
fileInStream= new FileInputStream(filename);
//available()方法返回int型,就是能够被读出的文件字节数。
bytes = fileInStream.available();
//在preparedStatement对象执行之前,参数?必须被设置好,否则报错。
//该任务由方法setXXX完成。XXX是参数适当的类型,根据数据库定义的字段类型来设
置。
//参数的位置由SQl语句的序叙决定。用setBinaryStream来设置文件流的参数。
insert.setBinaryStream(1,fileInStream,bytes);
insert.executeUpdate();
一 建表
CREATE TABLE TFILES (fID INT NOT NULL, finame VARCHAR(255), FI image,
PRIMARY KEY (fID));
INSERT into TFILES (fID, FINAME, FI) VALUES (1,"sample",null);
二 smaple4.htm
jspSmartUpload : Sample 4
三 上传smaple4.jsp
jspSmartUpload : Sample 4
执行时异常:
An error occurs : java.lang.NullPointerException 0 file(s) uploaded in the
database.
为什么?另外我在用下面的代码直接保村服务器上的文件时也提示该错误
//图片写入数据库函数
//sql 为数据库的SQL语句
//filename 为包含完整路径的文件名
//返回结果为字符型,True为成功,False为失败
public boolean WriteInMySql(String sql, String filename)
{
boolean writeReturn = false;
try
{
//定义文件流对象fileStream
FileInputStream fileInStream = null;
PreparedStatement insert;
int bytes = 0;
insert = conn.prepareStatement(sql);
if(filename != null && !filename.equals("") && sql != null &&
!sql.equals(""))
{
try
{
fileInStream= new FileInputStream(filename);
//available()方法返回int型,就是能够被读出的文件字节数。
bytes = fileInStream.available();
//在preparedStatement对象执行之前,参数?必须被设置好,否则报错。
//该任务由方法setXXX完成。XXX是参数适当的类型,根据数据库定义的字段类型来设
置。
//参数的位置由SQl语句的序叙决定。用setBinaryStream来设置文件流的参数。
insert.setBinaryStream(1,fileInStream,bytes);
insert.executeUpdate();
|
一点建议。。。
我当初做项目时,在“图片是上传到数据库还是上传到文件夹”做了选择,最后选择了上传到文件夹。因为数据量越大,图片对数据库的负担会很大。。。影响性能。...但也有优点,比如维护方便。。。
如果你在上传到文件夹时遇到问题。。。我可以帮你。。。
我当初做项目时,在“图片是上传到数据库还是上传到文件夹”做了选择,最后选择了上传到文件夹。因为数据量越大,图片对数据库的负担会很大。。。影响性能。...但也有优点,比如维护方便。。。
如果你在上传到文件夹时遇到问题。。。我可以帮你。。。
|
先保存到文件夹中,然后用流打开文件,并写入到数据库中。