java - MySQL--字段列表中的未知列

标签 java mysql sql mariadb

我不明白为什么下面的 UPDATE 在控制台中工作正常但在我的 Java 代码中失败

MariaDB [testdb]> DESCRIBE datasift_geo;
+-------------+---------------------+------+-----+---------+-------+
| Field       | Type                | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+
| datasift_id | bigint(20) unsigned | NO   | PRI | NULL    |       |
| latitude    | decimal(17,14)      | YES  |     | NULL    |       |
| longitude   | decimal(17,14)      | YES  |     | NULL    |       |
| location    | varchar(100)        | YES  |     | NULL    |       |
| coord       | point               | YES  |     | NULL    |       |
+-------------+---------------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

MariaDB [testdb]> SELECT * FROM datasift_geo;
+-------------+-------------------+-------------------+------------+-------+
| datasift_id | latitude          | longitude         | location   | coord |
+-------------+-------------------+-------------------+------------+-------+
|        1601 | 51.45713800000000 | -2.60802800000000 | Bristol UK | NULL  |
+-------------+-------------------+-------------------+------------+-------+

MariaDB [testdb]> UPDATE datasift_geo SET coord = GeomFromText('POINT(51.45713800000000 -2.60802800000000)');
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

================

@Test
public void testGeoCoord() throws SQLException {
    int id = 1601;
    float latitude = 51.45713806152344f;
    float longitude = -2.608027935028076f;
    String sql = "UPDATE `datasift_geo` SET `datasift_geo`.`coord` = GeomFromText('POINT(" + latitude + " " + longitude + ")') WHERE datasift_id = " + id;
    // get database connection, create a PreparedStatement, execute the UPDATE
}

======

执行更新的结果

java.sql.SQLSyntaxErrorException: Unknown column 'datasift_geo.coord' in 'field list'

最佳答案

从你用JAVA代码写的SQL来看,你似乎在SQL中提供了tableName.ColumnName。您应该只提供列名称。

String sql = "UPDATE `datasift_geo` SET **`datasift_geo`.`coord`** = GeomFromText('POINT(" + latitude + " " + longitude + ")') WHERE datasift_id = " + id;

语法是: UPDATE TABLE_NAME SET COLUMN_NAME
您的 Java 代码有: UPDATE TABLE_NAME SET TABLE_NAME.COLUMN_NAME -- 错误

从Exception也可以看出

因此,您在 Jave 代码中的 SQL 应该如下所示:

String sql = "UPDATE `datasift_geo` SET `coord` = GeomFromText('POINT(" + latitude + " " + longitude + ")') WHERE datasift_id = " + id;

关于java - MySQL--字段列表中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26100379/

相关文章:

php - 如何在复选框列表中显示数据库中的值?

mysql - 如何对行值求和并将结果保存在新的总计列中?

Java无法同时读写socket

php - Laravel 迁移 - Model::find($id) 返回 NULL 但 $id 存在于数据库中

php - 为什么php无法打印mysql数据库的数据?

sql - 数据库设计 - 重写值

c# - 在 LINQ to SQL 中执行查询

java - 解析 HTML(安卓)

java - 如何使用 System.out.println 查找 Java 类?

java - 通过 TCP 套接字从 java 服务器发送对象到 android 客户端