2

我使用 MySQL Workbench 作为我的服务器的 GUI。

查看 Workbench 所做的一些查询,似乎单引号我的数据库名称和列名称,即

"INSERT INTO `mydb`.`weather_data`(`dateTime`,`hourlyTemp`,`dewPoint`,`windSpeed`,`relHum`) VALUES(?,?,?,?,?)";

现在,我正在使用 JDBC (Java) 进行自动查询。我使用的字符串是:

String insertTableSQL = "INSERT INTO `mydb`.`weather_data`" 
                + "(`dateTime`,`hourlyTemp`,`dewPoint`,`windSpeed`,`relHum`) VALUES" 
                + "(?,?,?,?,?)";

我的问题是,我应该使用单引号吗?我应该删除它们吗?有必要吗?

编辑第二个问题:

这是我完整的preparedStatement();

private static void batchInsertRecordsIntoTable() throws SQLException{
        Connection dbConnection = null;
        PreparedStatement preparedStatement = null;

        String insertTableSQL = "INSERT INTO `mydb`.`weather_data`" 
                + "(`dateTime`,`hourlyTemp`,`dewPoint`,`windSpeed`,`relHum`) VALUES" 
                + "(?,?,?,?,?)";
        try{
            dbConnection = getDBConnection();
            preparedStatement = dbConnection.prepareStatement(insertTableSQL);

            dbConnection.setAutoCommit(false);

            preparedStatement.setString(1, "1111111111"); // dateTime
            preparedStatement.setInt(2, 12); // hourlyTemp
            preparedStatement.setInt(3, 12); // dewPoint
            preparedStatement.setInt(4, 12); //windSpped
            preparedStatement.setInt(5, 12); //relHum
            preparedStatement.addBatch();

            preparedStatement.executeBatch();

            dbConnection.commit();

            System.out.println("Record was inserted into mydb weather_data");

        }catch(SQLException e){
            System.out.println(e.getMessage());
            dbConnection.rollback();
        }finally{
            if(preparedStatement!=null){
                preparedStatement.close();
            }
            if(dbConnection!=null){
                dbConnection.close();
            }
        }
    }

出于某种原因,尽管没有连接错误,但数据并未被追加/添加/插入到我的数据库中。

4

2 回答 2

1

不是必需的,但很高兴拥有。你让解析器和任何人阅读它,什么是表、列、字符串。您应该继续使用它们。不使用它们只会伤害你,使用它们只会给你的文件增加额外的字节。

于 2013-11-08T21:49:33.733 回答
0

您可以将表和字段名称放在反引号中,但您不必这样做。使用反引号的好处是您可以在字段名称中使用一些特殊字符(例如逗号)。(但真的有人想要这样做吗?)缺点是反引号不是 ANSI SQL 标准的一部分。因此,如果您迁移到作为 MSSQL 的其他 SQL 实现,使用反引号可能会破坏您的代码。

tl;dr: 有些人认为使用反引号是一种很好的风格,但如果您不想在字段名称中使用特殊字符,则不需要这样做。

编辑:正如@a​​_horse_with_no_name 在评论中所说,MySQL 是唯一支持反引号的主要系统。

于 2013-11-08T21:52:25.483 回答