何が起こっているのか本当にわかりません。私は Java が初めてで、MySQL もかなり初めてです。
Java で MySQL データベースに行を挿入しようとしています。例外はスローされません。印刷すると、SELECT *
更新した行が表示されます。しかし、プログラムを再度実行したり、Workbench で実行したりすると、これらの行が保持されません。
列の 1 つ (pk) は、自動インクリメント フィールドです。このフィールドはインクリメントされていますが、データがありません。
Workbench を使用してデータを追加すると、データが保持され、Java プログラムを実行すると取得できますSELECT *
。データが消えたように見えるのは、以下のコードを使用して追加したときだけです。
これがコードです。私はチュートリアルに従った:
import java.sql.*;
public class SaveMap {
public static boolean MapSave(String mapName) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:mysql://127.0.0.1:3306/";
String db = "game_Maps";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "pass";
try {
Class.forName(driver);
con = DriverManager.getConnection(url + db, user, pass);
con.setAutoCommit(false);
st = con.createStatement();
System.out.println(st.executeUpdate("INSERT INTO Maps (mapName, mapSize) VALUES('DB Test', 5)"));
st.executeBatch();
String sql = "SELECT * FROM Maps";
rs = st.executeQuery(sql);
System.out.println("No \t Name");
while(rs.next()){
System.out.println(rs.getString(1) + " \t");
System.out.println(rs.getString(2) + " \t");
System.out.println(rs.getString(3) + " \t");
}
rs.close();
st.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}