Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
Mysql JDBC prepareStatement不起作用_Mysql_Jdbc_Prepared Statement - Fatal编程技术网

Mysql JDBC prepareStatement不起作用

Mysql JDBC prepareStatement不起作用,mysql,jdbc,prepared-statement,Mysql,Jdbc,Prepared Statement,我正在尝试使用prepareStatement函数。代码如下。在执行之后,它会返回一堆vlicense字符串,而不是值 当代码完成statement.setString时,该语句变为: select 'vlicense' from Vehicle 然而,它需要: select vlicense from Vehicle 没有引号。谁能告诉我有什么问题吗 statement = oConnection.prepareStatement("select ? from Vehicle"); Str

我正在尝试使用prepareStatement函数。代码如下。在执行之后,它会返回一堆vlicense字符串,而不是值

当代码完成statement.setString时,该语句变为:

select 'vlicense' from Vehicle
然而,它需要:

select vlicense from Vehicle
没有引号。谁能告诉我有什么问题吗

statement = oConnection.prepareStatement("select ? from Vehicle");
String tempString = "vlicense";
statement.setString(1, tempString);
resultSet = statement.executeQuery();

不能将参数标记用于列名、表名、数据类型名或基本上非数据的任何内容。

不能将参数标记用于列名、表名、数据类型名或基本上非数据的任何内容。

?无法用于指定字段,仅用于在查询中执行一些筛选,如:

statement = conn.prepareStatement("select field from Vehicle where name=?");
在您的情况下,您的查询构建为:

select 'vlicense' from Vehicle

这意味着:为“Vehicle”的每个记录获取字符串“vlicense”。根据表中记录的数量,您将得到n个重复的字符串?无法用于指定字段,仅用于在查询中执行一些筛选,如:

statement = conn.prepareStatement("select field from Vehicle where name=?");
在您的情况下,您的查询构建为:

select 'vlicense' from Vehicle

这意味着:为“Vehicle”的每个记录获取字符串“vlicense”。根据表中记录的数量,您将得到n个重复的字符串

当您向这样的语句添加绑定变量时,它将被转义,因此示例中的实际SQL字符串将作为SELECT'vlicense'FROM Vehicle进入数据库,选择一个文本字符串而不是您想要的列名

在准备SQL语句之前,需要将该变量列名连接到SQL语句中:

statement = oConnection.prepareStatement("SELECT " + vlicense + " FROM Vehicle");

绑定变量实际上用于查询参数,而不是动态查询。

当您将绑定变量添加到这样的语句中时,它将被转义,因此示例中的实际SQL字符串将作为SELECT'vlicense'FROM Vehicle进入数据库,选择文字字符串而不是所需的列名

在准备SQL语句之前,需要将该变量列名连接到SQL语句中:

statement = oConnection.prepareStatement("SELECT " + vlicense + " FROM Vehicle");
绑定变量实际上用于查询参数,而不是动态查询。

它与jdbc、预处理语句或mysql无关。 这只是一个错误的sql语句

如果键入:

Select 'justanexample' from Vehicle
这个表包含4行,你会得到4次

'justanexample'
'justanexample'
'justanexample'
'justanexample'
结果呢

您没有指定表结构,但我猜 语句应该是这样的:

select * from Vehicle where license = ?
它与jdbc、预处理语句或mysql无关。 这只是一个错误的sql语句

如果键入:

Select 'justanexample' from Vehicle
这个表包含4行,你会得到4次

'justanexample'
'justanexample'
'justanexample'
'justanexample'
结果呢

您没有指定表结构,但我猜 语句应该是这样的:

select * from Vehicle where license = ?