Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将行插入oracle时出现问题_Java_Oracle_Insert - Fatal编程技术网

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分钟前我还从未使用过这种类型的东西,现在它工作得很好。