我的JDBC sql语句出了什么问题

use*_*390 2 java mysql sockets client-server jdbc

我正在编写一个允许客户端与服务器通信的Java套接字应用程序,其他要求之一是它还需要初始化JDBC.我相信我已经正确地编写了我的JDBC连接方法,并且我的insert语句在类似的项目中也是如此.这可能是一个简单的错误,因为我没有使用IDE,有人能告诉我我的SQL语句有什么问题吗?所有信息都是正确的,但不会编译.

错误:

C:\Users\imallin\My Documents> javac provider.java
Provider.java:88 ';' expected 
String sql = "Insert INTO 'users' ('ID', 'firstName') VALUES ("123","123")";
Run Code Online (Sandbox Code Playgroud)

Jer*_*emy 5

您当前的问题是您需要转义字符串中的双引号.这是因为当编译器看到另一个时,"它认为它是String定义的结尾并且会出现一个分号.

String sql = "Insert INTO 'users' ('ID', 'firstName') VALUES (\"123\",\"123\")";
Run Code Online (Sandbox Code Playgroud)

现在Java编译器很高兴,您将遇到与SQL相关的问题.

通常使用SQL,您将需要使用单引号来表示字符串.似乎MySQL特别允许双引号,但仅在未设置SQL QUOTES ANSI模式时.因此,最好使用单引号来表示字符串.

这是你可能想要的,假设ID列是一个整数,并且该firstName列是一个字符串/ varchar.

String sql = "Insert INTO users (ID, firstName) VALUES (123,'123')";
Run Code Online (Sandbox Code Playgroud)