当前位置: 技术问答>java相关
上传文件到数据库中,请问哪里出错了?
来源: 互联网 发布时间:2015-07-04
本文导语: 上传时出错:出现了“java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数据。 ” String driver="sun.jdbc.odbc.JdbcOdbcDriver"; String connname="jdbc:odbc:fff"; String DBUsername="aaa"; String DBPassward="cc"; Conn...
上传时出错:出现了“java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数据。 ”
String driver="sun.jdbc.odbc.JdbcOdbcDriver";
String connname="jdbc:odbc:fff";
String DBUsername="aaa";
String DBPassward="cc";
Connection conn;
Class.forName(driver);
conn=DriverManager.getConnection(connname,DBUsername,DBPassward);
mySmartUpload.initialize(pageContext);//初始化
//mySmartUpload.setTotalMaxFileSize(5000000);//设定上传文件大小
mySmartUpload.upload();//开始上传
java.util.Enumeration ee=mySmartUpload.getRequest().getParameterNames();
while(ee.hasMoreElements()){//取出标题和内容
String key=(String) ee.nextElement();
String[] values=mySmartUpload.getRequest().getParameterValues(key);
if(key.equals("ntitle")){ //得到各个的内容
ntitle=values[0];
}else if(key.equals("ncontent")){
ncontent=values[0];
}
}
try{
if(!mySmartUpload.getFiles().getFile(0).isMissing()){//检查是否有文件上传
String fileName=mySmartUpload.getFiles().getFile(0).getFileName();//得到要上传的文件名
java.io.File file=new java.io.File(fileName);
if(file.exists()){//判断以前是否有文件存在,如果有,就删除这个文件
file.delete();//删除文件
}
mySmartUpload.getFiles().getFile(0).saveAs(fileName,mySmartUpload.SAVE_PHYSICAL);//把文件保存到filename中
java.io.File fileSave=new java.io.File(fileName);//重新得到一个文件对象
java.io.FileInputStream fis=new java.io.FileInputStream(fileSave);//得到文件的输入流
java.io.InputStream is=fis;
int imglen=new Long(fileSave.length()).intValue();//得到文件的长度
PreparedStatement ps=null;
sql="INSERT INTO test (ntitle, ncontent,filename, document)VALUES (?,?,?,?)";
ps=conn.prepareStatement(sql);
ps.setString(1,ntitle);
ps.setString(2,ncontent);
ps.setString(3,fileName);
ps.setBinaryStream(4,fis,imglen);
ps.executeUpdate();
ps.close();
}
}catch(Exception e){
out.println(e.toString());
}
String driver="sun.jdbc.odbc.JdbcOdbcDriver";
String connname="jdbc:odbc:fff";
String DBUsername="aaa";
String DBPassward="cc";
Connection conn;
Class.forName(driver);
conn=DriverManager.getConnection(connname,DBUsername,DBPassward);
mySmartUpload.initialize(pageContext);//初始化
//mySmartUpload.setTotalMaxFileSize(5000000);//设定上传文件大小
mySmartUpload.upload();//开始上传
java.util.Enumeration ee=mySmartUpload.getRequest().getParameterNames();
while(ee.hasMoreElements()){//取出标题和内容
String key=(String) ee.nextElement();
String[] values=mySmartUpload.getRequest().getParameterValues(key);
if(key.equals("ntitle")){ //得到各个的内容
ntitle=values[0];
}else if(key.equals("ncontent")){
ncontent=values[0];
}
}
try{
if(!mySmartUpload.getFiles().getFile(0).isMissing()){//检查是否有文件上传
String fileName=mySmartUpload.getFiles().getFile(0).getFileName();//得到要上传的文件名
java.io.File file=new java.io.File(fileName);
if(file.exists()){//判断以前是否有文件存在,如果有,就删除这个文件
file.delete();//删除文件
}
mySmartUpload.getFiles().getFile(0).saveAs(fileName,mySmartUpload.SAVE_PHYSICAL);//把文件保存到filename中
java.io.File fileSave=new java.io.File(fileName);//重新得到一个文件对象
java.io.FileInputStream fis=new java.io.FileInputStream(fileSave);//得到文件的输入流
java.io.InputStream is=fis;
int imglen=new Long(fileSave.length()).intValue();//得到文件的长度
PreparedStatement ps=null;
sql="INSERT INTO test (ntitle, ncontent,filename, document)VALUES (?,?,?,?)";
ps=conn.prepareStatement(sql);
ps.setString(1,ntitle);
ps.setString(2,ncontent);
ps.setString(3,fileName);
ps.setBinaryStream(4,fis,imglen);
ps.executeUpdate();
ps.close();
}
}catch(Exception e){
out.println(e.toString());
}
|
看看数据库中关于 数值型的字段,可能设的比较小,而你的输入比较大。