![](/img/trans.png)
[英]insert geospatial datatype( mutipolygon) in mysql with 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.