簡體   English   中英

SQL查詢中是否需要單引號? 具體來說,Java JDBC查詢

[英]Are single quotations necessary in SQL queries? Specifically, Java JDBC queries

我使用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" 
                + "(?,?,?,?,?)";

我的問題是,我應該使用單引號嗎? 我應該刪除它們嗎? 有必要嗎?

編輯第二個問題:

這是我完整的prepareStatement();

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();
            }
        }
    }

由於某些原因,盡管沒有連接錯誤,也沒有將數據追加/添加/插入到我的數據庫中。

不需要,但是很高興。 您正在讓解析器和任何人閱讀它,什么是表,列,字符串。 您應該繼續使用它們。 不使用它們只會傷害您,使用它們只會在文件中增加額外的字節。

您可以將表名和字段名放在反引號中,但不必這樣做。 使用反引號的優點是,您可以在字段名稱中使用一些特殊字符(例如,逗號)。 (但是,真的應該有人這樣做嗎?)缺點是反引號不是ANSI SQL標准的一部分。 因此,如果您遷移到其他SQL實現(例如MSSQL),則使用反引號可能會破壞您的代碼。

tl; dr:有些人認為使用反引號是一種很好的樣式,但是如果您不想在字段名稱中使用特殊字符,則不需要這樣做。

編輯:正如@a_horse_with_no_name在評論中所說,MySQL是唯一支持反引號的主要系統。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM