尝试将CKEditor(用于CMS - 内容管理系统)的内容插入Oracle数据库 - Oracle 10g时,我遇到以下异常.
Oracle表中的字段是clob类型.
java.lang.AbstractMethodError:oracle.jdbc.driver.T4CPreparedStatement.setCharacterStream(ILjava/io/Reader; J)V
另一方面是当我尝试使用JSON通过AJAX将相同的内容插入数据库时,不会导致此异常.
我正在使用
由于我将Hibernate从3.2.5更改为4.2.0.CR1,因此导致异常
这个链接说
setCharacterStream()方法有3个版本,其中两个是作为JDBC 4.0(Java 1.6)的一部分添加的.您的JDBC驱动程序可能不支持它们:
这个答案建议升级JDBC驱动程序,但这个问题是关于我还没有使用的Oracle 11g.
我不太确定.JDBC 11.x驱动程序是否与Oracle 10g兼容?曾几何时,我曾试过一个,但它没有正常工作.
如何解决这个异常?
编辑:
我刚刚下载了 ojdbc6.jar(之前是ojdbc14.jar上面指定的驱动程序),其中包含Oracle JDBC Driver version - "11.1.0.7.0-Production".
异常异常消失了.请告诉我,如果此驱动程序版本与Oracle 10g完全兼容.
我有一个需要审计的Java应用程序(所以显然我需要一种可以使用应用程序名称识别应用程序的方法).我用Google搜索并发现ojdbc14有一个.setClientInfo允许使用自定义名称注册应用程序的方法,所以我试图让它工作,但是我收到以下错误:
线程"main"中的异常java.lang.AbstractMethodError:oracle.jdbc.driver.T4CConnection.setClientInfo(Ljava/lang/String; Ljava/lang/String;)V
我在oracle 10g express中使用ojdbc14.如果我没有设置该行:
connection.setClientInfo("ApplicationName","Customers");
Run Code Online (Sandbox Code Playgroud)
它工作得很好....通过检查审计信息我可以看到oracle获取应用程序名称:OS_program_name = JDBC瘦客户端,但我需要一种方法来更改它以获得自定义名称.
通过取消注释应该设置应用程序名称的那一行,它返回上面的错误.
每个oracle文档该方法可用于Connection对象.你知道如何解决这个问题吗?
我有一个Java Hibernate项目配置,它与SQL Server 2008 R2一起使用,现在有了新的OS 8.1(从7开始)和SQL Server 2012(express),我无法连接到SQL服务器.
因为它适用于2008 R2 ,所以/应该在语法上正确的相关配置:
datasource.properties
jdbc.driverClassName=net.sourceforge.jtds.jdbc.Driver
jdbc.url=jdbc:jtds:sqlserver://localhost:1433/dbname;instance=SQLEXPRESS
jdbc.username=auser
jdbc.password=xyz
Run Code Online (Sandbox Code Playgroud)
我试过org.hibernate.dialect.SQLServerDialect在2008 R2工作的两种方言.
hibernate.hbm2ddl.auto=create-drop
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
#hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
hibernate.show_sql=true
Run Code Online (Sandbox Code Playgroud)
springConfiguration.xml
<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
SQL Server 2012安装了混合模式身份验证,SQL Server Management Studio连接没有问题(有或没有实例名称).
我已经更新了SQL Server Network Configurationfor SQLEXPRESS.
SQLEXPRESS的协议:
TCP/IP Enabled
以及TCP/IP Properties - TCP Port到1433年的所有.
我试过禁用Windows防火墙只是为了测试它是否在路上,但它会导致相同的错误.
我最终添加了防火墙规则,并按照这个优秀的配置SQL Express 2012中的一些步骤来接受远程连接文章. …
我已经读过 为什么在尝试在db中加载blob时会得到java.lang.AbstractMethodError?,下载了我能找到的所有11g jdbc驱动程序,并将它们作为库和/或jar文件添加到我的NetBeans应用程序中.我仍然继续得到相同的AbstractMethodError,这让我变得多了!任何指导将不胜感激!
try {
stmt = conn.createStatement();
inputFileInputStream = new FileInputStream(inputBinaryFile);
Blob vBlob = conn.createBlob();
BufferedImage vGImage=ImageIO.read(name);
int offset =0;
OutputStream out = vBlob.setBinaryStream(offset);
ImageIO.write(vGImage, "JPG", out);
PreparedStatement stat = conn.prepareStatement("INSERT INTO item VALUES (?,?,?,?,?)");
stat.setString(1, itemNo);
stat.setString(2, itemName);
stat.setBlob(3,vBlob);
stat.setString(4, invenType);
stat.setDouble(5, vPrice);
stat.executeUpdate();
} catch (IOException e) {
System.out.println("Caught I/O Exception: (Write BLOB value - Put Method).");
e.printStackTrace();
throw e;
} catch (SQLException e) {
System.out.println("Caught SQL Exception: (Write BLOB value - Put Method).");
System.out.println("SQL:\n" + …Run Code Online (Sandbox Code Playgroud) 我有这个问题java.io.File从选择a JFileChooser上传所述java.io.File对象到具有此表结构的MySQL表
COL_NAME COL_TYPE ATTRIBUTES EXTRA
(PK) idSample int(10) UNSIGNED ZEROFILL AUTO_INCREMENT
FileName varchar(250)
FileBin blob BINARY
Run Code Online (Sandbox Code Playgroud)
从这个Java代码中,该newConnection方法是该类的静态方法,其中它将DriverManager的新实例默认返回到所述MySQL数据库.另一件事,我使用的java.sql包不是com.mysql.jdbc包.
public static boolean insert(final String filename, File file) throws SQLException, IOException {
boolean flag = false;
try {
Connection connection = newConnection();
PreparedStatement statement = connection.prepareStatement(SQL_INSERT);
statement.setString(1, filename);
statement.setBlob(2, new FileInputStream(file), file.length());
flag = statement.executeUpdate() > 0;
statement.close();
connection.close();
} catch (SQLException ex) {
throw ex;
} catch (IOException ex) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个非常简单的类来向Oracle XE 11g实例发送查询,实际上是创建一个非常简单的SQL*Plus来获取JDBC的基础知识.
我目前正在使用的源代码是:
public class Example {
static String username, password;
static String dbDriver = "oracle.jdbc.driver.OracleDriver";
static String dbConnection = "jdbc:oracle:thin:@//localhost:1521/xe";
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String line;
Connection c = null;
Statement stmt = null;
int loginAttempts = 0;
// Log in loop
do {
try {
Class.forName(dbDriver);
System.out.print("Enter username: ");
line = input.nextLine();
if (line.contains("/")) {
String[] login = line.split("/");
if (login.length != 2) {
System.out
.println("Unrecognized information, exiting..."); …Run Code Online (Sandbox Code Playgroud)