今天在测试向SQL Server数据库中写入image数据时,
出错异常:
Exception in thread "main" java.lang.AbstractMethodError:com.microsoft.jdbc.base.BasePreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
出错代码是:
stat.setBinaryStream(4,in,file.length());//这里stat为java.sql.PreparedStatement;in为java.io.FileInputStream;file为java.io.File
查寻发现:java.lang.AbstractMethodError错误为: 当应用程序试图调用一个抽象方法时,抛出此错误。
也就是说文件接口PreparedStatement中的setBinaryStream(int,InputStream,long)方法在JDBC for Sql Server 2000中没有实现,
无意之中,把file.length()改为了(int)file.length()竟然发现成功,表示方法setBinaryStream(int,InputStream,int)有实现.
今天在网上找了下上面的问题,居然大家都用一种模式写了N篇帖子,
而且在SQL Server 2000下测试没一通过,下面有人跟贴说成功,谢谢...
不知道是自己JDBC驱动有问题呢,还是大家都真的运行成功了.
分享到:
相关推荐
首先,我们需要使用 JDBC 驱动程序连接到 SQL Server 数据库,并从结果集中取出 Image 类型数据: ```java InputStream in = rsSql.getBinaryStream("PICTURE"); ``` 然后,我们需要将 Image 类型数据写到文件中: `...
在IT领域,数据库管理系统(DBMS)如Oracle、MySQL和SQL Server 2000是处理大量数据的核心工具。这些系统对于大数据对象的操作至关重要,尤其是对于存储图像、音频、视频等非结构化数据的企业级应用。本文将深入探讨...
在Java代码中,我们需要读取图片文件,然后将其转换为字节流,最后通过`PreparedStatement`的`setBinaryStream`方法将字节流设置到SQL语句的参数中。以下是一个简单的示例: ```java File f = new File("E:/PHOTO/...
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ``` 2. **连接数据库**: ```java String url = "jdbc:sqlserver://localhost:1433;databaseName=Book;user=sa;password=;"; Connection ...
在Java中操作Oracle的`BLOB`类型,通常需要通过`oracle.jdbc.OraclePreparedStatement`和`oracle.jdbc.OracleResultSet`类提供的特定方法,如`setBlob`和`getBlob`,进行数据的读写。这些方法可以更方便地与Oracle...
static String url = "jdbc:microsoft:sqlserver://192.168.0.202:9999999999;DatabaseName=dddd"; static String user = "sa"; static String passwd = "ps"; public static void main(String[] args) throws ...
- **设置参数**:通过`setBinaryStream`方法将文件流作为参数传递给SQL语句。 - **执行SQL**:调用`executeUpdate`执行插入操作。 - **关闭资源**:确保所有打开的资源都被正确关闭。 **2. 读取图片** ```java ...
6. **读取文件并写入BLOB**:使用`InputStream`读取文件内容,然后通过`PreparedStatement`的`setBinaryStream()`方法将数据写入BLOB字段。 7. **提交事务**:执行`Statement.execute()`或`PreparedStatement....
6. **数据库连接**:使用JDBC建立与SQL Server的连接,创建PreparedStatement对象,设置SQL语句(如`INSERT INTO YourTable (imageField) VALUES (?)`),并使用`setBinaryStream`方法将文件流设置为参数。 7. **...
例如,在代码片段中,URL为`"jdbc:microsoft:sqlserver://IP:1433;DataBaseName=Moftec"`,其中`IP`是数据库服务器的IP地址,`1433`是SQL Server默认的端口号,`Moftec`是数据库名称。 ### 二、读取图片文件 在将...
首先在数据库中创建`BLOB`类型字段(SQL Server中为`IMAGE`)。处理图像文件时,需注意大小限制,超过一定量级(如64K)应考虑使用`BIGBLOB`类型。 存储时,可将文件转换为字节流,通过`setBinaryStream()`方法...
首先,需要添加对应的JDBC驱动(如Microsoft JDBC Driver for SQL Server)到项目的类路径。然后,使用`PreparedStatement`或`Statement`对象的`setBinaryStream`方法将图片文件读取为字节流并写入BLOB字段。 ```...
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testdb"; conn = DriverManager.getConnection(url, "sa", "password...
- `PreparedStatement`中的`setInt()`方法设置id值,`setBinaryStream()`方法用于将文件流设置为图像列的值。在这里,`FileInputStream`用于读取文件内容,`inFileStream.length()`获取文件长度,然后传递给`...
本例中,代码通过`Class.forName()`方法加载了Microsoft SQL Server的JDBC驱动,并通过`DriverManager.getConnection()`方法建立了与数据库的连接。 ```java Class.forName(driver); // 加载数据库驱动 conn = ...
在Java Web开发中,使用JSP(JavaServer Pages)上传照片到MySQL数据库并查询显示是一项常见的任务。以下是如何实现这一过程的详细步骤: 1. **创建数据库表结构**: - MySQL支持存储大容量二进制文件,如照片,...
本示例展示了如何使用JSP(JavaServer Pages)将图片上传至Oracle数据库,并进行显示。以下是对这一过程的详细解释: 首先,我们需要在数据库中创建一个表来存储图片信息。在Oracle数据库中,可以使用SQL语句创建一...