Java 将行插入oracle时出现问题
你知道为什么这样不行吗 该表的名称为Java 将行插入oracle时出现问题,java,oracle,insert,Java,Oracle,Insert,你知道为什么这样不行吗 该表的名称为TESTTABLE,只有一列名为TEST\u column,它是主键。我肯定这是愚蠢的,但我想我会问。 我已经连接到数据库,所以我不担心提供代码 Statement statement = connection.createStatement(); String test = "test"; statement.executeUpdate("INSERT INTO TESTTABLE (TEST_COLUMN) VALUES (" + test + ")");
TESTTABLE
,只有一列名为TEST\u column
,它是主键。我肯定这是愚蠢的,但我想我会问。
我已经连接到数据库,所以我不担心提供代码
Statement statement = connection.createStatement();
String test = "test";
statement.executeUpdate("INSERT INTO TESTTABLE (TEST_COLUMN) VALUES (" + test + ")");
给了我这个错误
ORA-00984: column not allowed here
我假设这是一个varchar列,请尝试:
statement.executeUpdate("INSERT INTO TESTTABLE (TEST_COLUMN) VALUES ('" + test + "')");
请注意数据周围的单引号。我假设这是一个varchar列,请尝试:
statement.executeUpdate("INSERT INTO TESTTABLE (TEST_COLUMN) VALUES ('" + test + "')");
请注意数据周围的单引号。单引号明确指出了问题所在@您应该研究使用auwall来帮助避免SQL注入。@auwall:Oracle中的字符数据常量必须用单引号括起来,这就是您向Oracle提供此语句的原因。一般来说,在Oracle中以这种方式构建动态语句是一个坏主意,这既有@pickypg状态的原因,也有性能问题。只要有可能,就应该使用绑定变量。好的,我现在来研究一下。问题是。我从connection.createStatement()获取了一条语句;我怎样才能得到一份事先准备好的声明?@auwall:来自同一家公司。只需调用prepareStatement()。谢谢,直到20分钟前我还从未使用过这种类型的东西,现在它工作得非常好。单引号肯定能解决问题@您应该研究使用auwall来帮助避免SQL注入。@auwall:Oracle中的字符数据常量必须用单引号括起来,这就是您向Oracle提供此语句的原因。一般来说,在Oracle中以这种方式构建动态语句是一个坏主意,这既有@pickypg状态的原因,也有性能问题。只要有可能,就应该使用绑定变量。好的,我现在来研究一下。问题是。我从connection.createStatement()获取了一条语句;我怎样才能得到一份事先准备好的声明?@auwall:来自同一家公司。只需调用prepareStatement()。谢谢,直到20分钟前我还从未使用过这种类型的东西,现在它工作得很好。