![](/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.