使用JDBC,
当我声明“id”字段是主键时,此代码有效。
String sql = "CREATE TABLE REGISTRATION1 " +
"(id INTEGER not NULL, " +
" first VARCHAR(255), " +
" last VARCHAR(255), " +
" age INTEGER, " +
" PRIMARY KEY (id))";
stmt.executeUpdate (sql);
但是当我删除声明PRIMARY KEY (id)
和not NULL
标记时。
String sql = "CREATE TABLE REGISTRATION2 " +
"(id INTEGER, " +
" first VARCHAR(255), " +
" last VARCHAR(255), " +
" age INTEGER");
stmt.executeUpdate (sql);
答案 0 :(得分:3)
它没有编译,因为你有一个不应该在那里的尾随括号:
" age INTEGER");
应该是
" age INTEGER)";
它与SQL编译器不关心的SQL字符串的内容无关。
请注意,从编译器读取错误消息有助于识别错误的内容和位置。您应该阅读该消息,如果您无法理解它,请将其发布,而不是错误地猜测问题可能是什么。
答案 1 :(得分:0)
您的括号位于字符串查询之外。构造并传递错误的字符串进行处理。
String sql = "CREATE TABLE REGISTRATION2 " +
"(id INTEGER, " +
" first VARCHAR(255), " +
" last VARCHAR(255), " +
" age INTEGER)";
System.out.println("Sql Query is ="+sql);
//Now Execute you query here
如果在执行之前打印sql查询,也可以找到确切的错误/异常。此print语句将显示您要执行的确切查询。
希望它会对你有所帮助。