在Debian上使用Java连接到MySQL
我正在尝试使用Java连接MySQL数据库,但出现以下错误:在Debian上使用Java连接到MySQL,java,mysql,debian,Java,Mysql,Debian,我正在尝试使用Java连接MySQL数据库,但出现以下错误: SQLException: 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 我无法理解这个错误,在网上搜索了很多,但没有找到任何东西。这是我正在使用的代码:
SQLException: 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
我无法理解这个错误,在网上搜索了很多,但没有找到任何东西。这是我正在使用的代码:
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
}
catch (Exception E)
{
System.err.println("Unable to load driver");
E.printStackTrace();
}
try
{
Connection C = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/DATABASE_NAME","USERNAME","PASSWORD");
Statement Stmt = C.createStatement();
ResultSet RS = Stmt.executeQuery("SELECT somefield FROM sometable");
while (RS.next())
{
System.out.print("\"" + RS.getString(1) + "\"");
System.out.print(" by " + RS.getString(2));
System.out.println(": " + RS.getString(3));
}
C.close();
RS.close();
Stmt.close();
}
catch (SQLException E)
{
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}
上面的SQL查询就是这个问题的一个例子。我正在使用的MySQL控制台工作没有任何问题。事实上,即使我从上面的代码中删除了查询和语句,我仍然会得到相同的错误。
有人能帮忙吗?
提前感谢很可能是因为您正在使用 从表中选择字段-表是SQL保留字。如果要执行此查询,可能需要执行以下操作
select field from `table`
将单词表放在后面 很可能是因为您正在使用 从表中选择字段-表是SQL保留字。如果要执行此查询,可能需要执行以下操作
select field from `table`
将单词表放在后面 从哪一行抛出异常(在catch中,添加E.printStackTrace())?另外,请尝试在查询结束时抛出分号,例如“select field from table”;您好,谢谢您的评论,我也尝试了添加分号,但错误中没有区别抛出异常的行是什么(在您的catch中,添加e.printStackTrace())?此外,请尝试在查询的末尾使用分号,例如“select field from table”;您好,谢谢您的评论,我也尝试添加了分号,但错误没有区别对不起,我应该在之前澄清一下。上面的SQL查询是关于这个问题的一个通用示例,而不是我实际使用的示例。我使用的查询是正确的。至少当我直接在MySQL控制台中执行它时,它工作正常。事实上,即使我从Java代码中删除了查询和语句,我仍然会得到相同的错误。当Java客户端以不同于服务器预期的字符集发送请求时,我偶尔会看到这种情况,例如,服务器需要EUC-JP字符,而您发送的是US-ASCII。。。这也将与您在错误消息中发布的“??”相匹配。最后,这起作用了!这确实是一个编码问题。我刚刚使用了编码集“latin1”,这让我很开心。非常感谢@Dataknife,我真的不认为编码会有问题。很抱歉误解了,我应该在之前澄清一下。上面的SQL查询是关于这个问题的一个通用示例,而不是我实际使用的示例。我使用的查询是正确的。至少当我直接在MySQL控制台中执行它时,它工作正常。事实上,即使我从Java代码中删除了查询和语句,我仍然会得到相同的错误。当Java客户端以不同于服务器预期的字符集发送请求时,我偶尔会看到这种情况,例如,服务器需要EUC-JP字符,而您发送的是US-ASCII。。。这也将与您在错误消息中发布的“??”相匹配。最后,这起作用了!这确实是一个编码问题。我刚刚使用了编码集“latin1”,这让我很开心。多亏了@Dataknife,我真的没想到编码会成为一个问题。