簡體   English   中英

使用 MySQL 表的 java jdbc 更改數據類型

[英]Change datatype using java jdbc of MySQL table

如何使用與 MySQL 中表的 Java 的 JDBC 連接將數據類型從varchar更改為int

我嘗試使用查詢:

Alter table table_name CHANGE 'col 1' 'col 1' int (5 );

我使用導入選項導入的文件在 varchar 中有值,但我只需要該表中的整數值。 導入表的值沒有排序,但整數值對我有用。

當我在 phpmyadmin 中使用 alter 查詢時,它工作得很好,但是當我嘗試在 jdbc 中進行更改時,它給了我錯誤:

Incorrect integer value: at 'col 1';

jdbc 代碼如下:

try {
    Connection co=DriverManager.getConnection("jdbc:mysql://localhost:3306/csv_db","root",null);
    String c= " ALTER TABLE tpf1 MODIFY `col 3` int(5)";  
    String t="Alter table table_name CHANGE 'col 1' 'col 1' int (5 );";
    Statement stmt=co.createStatement();

    stmt.executeUpdate(t);

} catch (SQLException ex) {
    JOptionPane.showMessageDialog(this, ex);
}

編輯

try {
    Connection co=DriverManager.getConnection("jdbc:mysql://localhost:3306/csv_db","root",null);
    String c= " ALTER TABLE tpf1 MODIFY `col ` int(20)";  

    Statement stmt=co.createStatement();

    stmt.executeUpdate(t);

} catch (SQLException ex) {
    JOptionPane.showMessageDialog(this, ex);
}

表格截圖在照片中: 表

這實際上是一個 pdf 文件並將其轉換為 .csv 並導入到我的數據庫中 我只需要表中的整數值而不需要任何其他字母和符號。 此代碼僅用於一列,我需要更改所有三列。那么我應該怎么做才能使用 jdbc 只獲取整數值? :| :)

就像@Mark Rotteveel 在評論中所說的那樣,你的 Query 有問題,所以你的列名應該在兩個``而不是兩個''""之間,如果你的列名包含不止一個部分,這將不起作用更改您應該使用的列的類型:

//change column type
String query = "ALTER TABLE tablename MODIFY `col 1` INT(5)";
Statement stmt = co.createStatement();
int rslt = stmt.executeUpdate(query);

要更改名稱或您的列,請使用以下命令:

//change column name
query = "ALTER TABLE tablename CHANGE `old name` `new name` INT(5);";
stmt = co.createStatement();
rslt = stmt.executeUpdate(query);

這樣您就可以檢查您的查詢是否像這樣成功執行:

if (rslt > 0) {
    System.out.println("Success");
} else {
    System.out.println("Failed");
}

筆記

如果您更改類型,這將更改所有列,並將其設置為0

我建議避免使用兩個部分的名稱,您可以使用 col_name 代替,因為這會導致問題,例如,如果您使用 JPA。

編輯

我嘗試了這段代碼,它工作正常:

public class UpdateColumn {

    static String driver = "com.mysql.jdbc.Driver";
    static String DB_username = "root";
    static String DB_password = "password";
    static String DB_URL = "jdbc:mysql://localhost:3306/db_name";

    public static void main(String args[]) {
        /*read from the file*/
        try {
            Class.forName(driver);
            java.sql.Connection co = DriverManager.getConnection(DB_URL, DB_username, DB_password);
            //change column type
            String query = "ALTER TABLE tablename MODIFY `c 1` INT(5);";
            Statement stmt = co.createStatement();
            int rslt = stmt.executeUpdate(query);
            System.out.println(rslt);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

MySQL

create database db_name;

use db_name;

drop table t1;

create table tablename(
`c 1` varchar(5),
`c 2` int
);

INSERT INTO tablename values('java', 1);
INSERT INTO tablename values('mysql', 2);

祝你好運。

statement.executeUpdate("ALTER TABLE table_name ALTER COLUMN column_name datatype");

暫無
暫無

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

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