Java 无法将文件上载到数据库

Java 无法将文件上载到数据库,java,blob,Java,Blob,我正在使用以下代码将文件上传到数据库中,该代码可以很好地处理图像,而对于其他文件,它不起作用,我终于发布了堆栈跟踪 我的第二个值是一个blob String strFilePath = null; Hashtable<Object,Object> fileTable = null; InputStream input = null; CosUploadFile file = null; fileTable = multiPartFormData.getF

我正在使用以下代码将文件上传到数据库中,该代码可以很好地处理图像,而对于其他文件,它不起作用,我终于发布了堆栈跟踪

我的第二个值是一个blob

   String strFilePath = null;
   Hashtable<Object,Object> fileTable = null; 
   InputStream input = null; 
   CosUploadFile file = null;

fileTable = multiPartFormData.getFiles();
file = (CosUploadFile)fileTable.get("filepath");
input =file.getInpuStream();

prepare = connection.prepareStatement("insert into all_files values(?,?,?)");
prepare.setString(1, strFileSplit[0]);
prepare.setBinaryStream(2,input);
prepare.setString(3,strFileSplit[1]);
prepare.execute();
这是我试图上载文档文件时的堆栈跟踪。 我该怎么办呢

编辑: 以下是我的连接代码

DBConnect dbConnect = new DBConnect();
Connection connection = dbConnect.connect();
数据库连接类

  public Connection connect() 
    {   
    Connection con = null;
    try
    {
    InitialContext context = new InitialContext();
    DataSource datasource = (DataSource)context.lookup("datasource");
    con = datasource.getConnection("TRAIN2012", "xyz123");
    return con;
    }

尝试以下方法,但最好将图像存储在文件系统中,并将文件位置存储在数据库中。关于这一点,可以找到冗长的讨论


您正在尝试连接到Oracel数据库吗?还有什么数据库?如果您存储的是图像或其他文件,这应该不会有什么区别。请一次只测试一个文件的代码。如果我记得正确的话,在10g中插入BLOB有点复杂。首先必须插入一行,然后选择它进行更新。现在可以插入BLOB了。你应该用谷歌搜索一下。我刚刚尝试过更新insert,但同样的错误在updation@user714965上重复出现。@sagar你只在一个文件上尝试过吗?我使用的是web应用程序,无法获取客户端地址,因此无法使用it@sagar你说的客户端地址是什么意思?你能详细说明一下吗?用户是本地系统的,因为任何新系统都不允许这样做browsers@sagar检查在
strFilePath
中打印的内容。为了进行测试,请尝试一次上载一个文件,看看它是如何工作的。@sagar因此,请尝试使用我发布的代码从您提到的路径上载一个文件,看看它是否工作。
  public Connection connect() 
    {   
    Connection con = null;
    try
    {
    InitialContext context = new InitialContext();
    DataSource datasource = (DataSource)context.lookup("datasource");
    con = datasource.getConnection("TRAIN2012", "xyz123");
    return con;
    }
FileInputStream fis = null;

File image = new File("\\yourpath\test.PNG");
fis = new FileInputStream(image);
prepare.setBinaryStream(2,fis,(int)image.length());
prepare.execute();