当前位置: 首页 > 面试题库 >

JDBC的残端SQL异常

闽承望
2023-03-14
问题内容

我正在尽一切努力使JDBC正常工作,现在让我感到困扰的唯一事情就是这个异常,对此我一无所知:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '????????????????' at line 1
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1049)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)
    com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1890)
    com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3523)
    com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2386)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:374)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    java.sql.DriverManager.getConnection(libgcj.so.10)
    java.sql.DriverManager.getConnection(libgcj.so.10)

我正在用它来连接…

Class.forName("com.mysql.jdbc.Driver");
DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "username", "password");

非常感谢!


问题答案:

这些是相关的部分:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for the 
right syntax to use near '????????????????' at line 1
    ...
    com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1890)
    ...
    java.sql.DriverManager.getConnection(libgcj.so.10)

这些问号表示在配置客户端字符集的查询过程中存在严重的字符编码问题。

首次尝试时,打开my.cnf文件并确保存在以下两个条目:

character_set_server=utf8
collation_server=utf8_general_ci

第二次尝试,用更健壮的OpenJDK或Oracle(Sun)JDK替换GCJ
。众所周知,GCJ有其独特之处。



 类似资料:
  • 我是第一个 org.springframework.jdbc.BadSqlGrammarException:准备状态回调;错误的SQL语法[选择cid,临床医生代码,密码,名字,临床医生的姓氏,其中临床医生代码= ?]; 嵌套异常com.mysql.jdbc.exceptions.jdbc4. MySQLSyntaErrorException:字段列表中的未知列“临床医生” 以下代码出错,您还可以

  • 主要内容:SQLException方法,实例异常处理允许我们以受控的方式处理异常情况,而不是直接退出程序,例如程序定义的错误。 发生异常时可以抛出异常。术语“异常”表示当前的程序执行停止,并且被重定向到最近的适用的子句。如果没有适用的子句存在,则程序的执行结束。 JDBC异常处理与Java异常处理非常相似,但对于JDBC,要处理的最常见异常是。 SQLException方法 驱动程序和数据库中都会发生。 发生这种异常时,类型的对象将被传递给

  • 问题内容: 有人可以推荐一个好的,开源的独立开发人员工具来使用JDBC查询SQL数据库并将结果导出到文件吗?我知道许多数据库供应商都提供了自己的工具,但是我需要一个工具来允许我插入自己的自定义JDBC驱动程序并针对任何数据库进行工作。GUI是可取的,但不是必需的。 Oracle的SQL Developer被取消资格,因为它似乎只能与一组预装的JDBC驱动程序一起使用。我也查看了Java- Sour

  • 我已经创建了一个数据库:Compaction.mdb,并将其添加到用户DNS:“adm”中。当我试图通过java程序访问它时,我使用以下代码连接数据库 class.forname(“sun.jdbc.odbc.jdbcodbcdriver”); 连接con=DriverManager.getConnection(“jdbc:odbc:adm”); 它运行正常,程序可以访问数据库。但是,当我试图在s

  • 结构化查询语言(SQL)是一种标准化语言,允许对数据库执行操作,例如:创建数据记录,读取内容,更新内容和删除数据记录等。 本教程中将概述SQL,这是了解和学习JDBC概念的前提条件。 经过本章后,您将能够在数据库中创建,创建,读取,更新和删除(通常称为CRUD操作)数据。 有关SQL的详细了解,可以阅读我们的MySQL教程 。 1. 创建数据库 语句用于创建新的数据库。 语法是 - 示例 以下SQ