gpt4 book ai didi

java - MySQL - 如果不在 Java 中创建,则检查列是否存在

转载 作者:行者123 更新时间:2023-11-29 02:52:16 26 4
gpt4 key购买 nike

我花了几个小时研究如何创建有助于我的程序的 Java 方法。我是 MySQL 的新手,所以我不是最有经验的人。

我想做的是编写一个 Java 方法来检查表中是否存在以用户名命名的列。如果它不存在,它将创建该列。

我在互联网上看到了很多关于我的问题的类似解决方案的教程。我不知道应该如何将 TABLE_SCHEMA 实现到 java 方法中,因为我只知道 MySql 的基础知识。

很高兴看到如何将此解决方案或其他一些解决方案实现到 Java 方法中。我已经删除了大部分我以前的工作,因为我无法弄清楚,如果我需要证明这一点,我很抱歉(这是我的第一个问题。)

编辑:

        try {
ResultSet res = conn.createStatement()
.executeQuery("ALTER TABLE `package_table` ADD " + username + " VARCHAR(15);");
if (!res.next()) {
conn.createStatement()
.executeUpdate("INSERT INTO `package_table` (`uuid`, `name`, `packages`) VALUE ('"
+ event.getPlayer().getUniqueId() + "', '" + event.getPlayer().getName() + "', '" + "" + "');");
}
} catch (SQLException e) {
e.printStackTrace();
try {
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

编辑2: 我需要做专栏的原因是我需要存储用户名拥有的“包”。可以有“无限”数量的包。

谢谢, jack

最佳答案

您可以使用 jdbc 来完成。只需获取列名称,然后根据需要添加一个。

像这样:

Connection con;
Statement st;
ResultSet rs;

try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/dbname",
"dbuser",
"bdpass"
);

st = con.createStatement();

String sql = "select * from table";
rs = st.executeQuery(sql);
ResultSetMetaData metaData = rs.getMetaData();
int rowCount = metaData.getColumnCount();

boolean isMyColumnPresent = false;
String myColumnName = "myColumnName";
for (int i = 1; i <= rowCount; i++) {
if (myColumnName.equals(metaData.getColumnName(i))) {
isMyColumnPresent = true;
}
}

if (!isMyColumnPresent) {
String myColumnType = "some type";
st.executeUpdate("ALTER TABLE table ADD " + myColumnName + " " + myColumnType);
}
} catch (Exception e) {
e.printStackTrace();
}

关于java - MySQL - 如果不在 Java 中创建,则检查列是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34448071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com