Как установить столбец smallmoney, используя JDB C? - PullRequest
0 голосов
/ 29 февраля 2020

Я использую следующее PreparedStatement для обновления SQL Express базы данных с Java:

PreparedStatement update_product_statement = connection.prepareStatement("UPDATE products set display_name  = ?, price = ?, color = ?, size = ? WHERE product_id= ? ;");
    update_product_statement.setString(1, product.getDisplayName());

    BigDecimal price= new BigDecimal(product.getPrice());
        update_product_statement.setBigDecimal(2, price);
        if(product instanceof MatrixItem) {
            update_product_statement.setString(3,((MatrixItem) product).getColor());    
            update_product_statement.setString(4,((MatrixItem) product).getSize()); 
        } else {
            update_product_statement.setString(3, "");  
            update_product_statement.setString(4, "");  
        }
        update_product_statement.setInt(5, product.getId());
        update_product_statement.executeUpdate();

Я получаю сообщение об ошибке, которое говорит com.microsoft.sqlserver.jdbc.SQLServerException: The value is not set for the parameter number 2. Я думаю, что это происходит, потому что «цена» в таблице SQL установлена ​​на SMALLMONEY, а переменная «цена» в коде Java - BigDecimal. Читая документы Microsoft, похоже, что так оно и должно быть, но все равно не работает.

Вот документ, на который я ссылаюсь: https://docs.microsoft.com/en-us/sql/connect/jdbc/using-basic-data-types?view=sql-server-ver15

В нем говорится, что SMALLMONEY является BigDecimal в Java. Также стоит отметить, когда я пытаюсь использовать update_product_statement. setDecimal (2, цена) ; он переключает его на BigDecimal (2, цена) в затмении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...