1. ホーム
  2. SQL

executeQuery()ソリューションでデータ操作文を発行できない。

2022-02-21 04:56:46

MySQLデータベースが接続され、以下のJavaコードでテーブル構造作成文が実行されます。

        String driver = "com.mysql.jdbc.Driver"; // Get the driver class for the mysql database
	String url = "jdbc:mysql://" + dataSource.getDataSourceIp() + " + dataSource.getDataSourcePort() + "/" + dataSource.getDataSourceName()
					+ "?characterEncoding=" + dataSource.getCharacterSet(); // connect to the database
	String userName = dataSource.getDataSourceUser(); // the username to connect to mysql
	String password = dataSource.getDataSourcePwd(); // password to connect to mysql
	try {
		Class.forName(driver);
		Connection con = (Connection) DriverManager.getConnection(url, userName, password);
		String s = con.nativeSQL(sql);
		System.out.println(s);
		Statement st = con.createStatement();
		ResultSet rs = st.executeQuery(sql);
		while (rs.next()) {
			System.out.println(rs.getString(1) + "/t" + rs.getString(2));
		}
		rs.close();
		st.close();
		con.close();
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	}





エラーメッセージは以下の通りです。

executeQuery()でデータ操作文を発行できません。

デバッグ後、createを実行した場合だからです。 更新、挿入SQL文 は、ステートメントのexecute()メソッドを使用する必要があり、ステートメントのexecuteQuery()メソッドを使用する場合は、アピールの問題が発生します

修正したjavaのコードは以下の通りです。

<スパン

String driver = "com.mysql.jdbc.Driver"; // Get the driver class for the mysql database
String url = "jdbc:mysql://" + dataSource.getDataSourceIp() + " + dataSource.getDataSourcePort() + "/" + dataSource.getDataSourceName() + "?characterEncoding=" + dataSource.getCharacterSet(); // Connect to the database
String userName = dataSource.getDataSourceUser(); // the username to connect to mysql
String password = dataSource.getDataSourcePwd(); // password to connect to mysql
try {
	Class.forName(driver);
	Connection con = (Connection) DriverManager.getConnection(url, userName, password);
	String s = con.nativeSQL(sql);
	Statement st = con.createStatement();
	boolean result = st.execute(sql);
	st.close();
	con.close();
} catch (ClassNotFoundException e) {
	e.printStackTrace();
} catch (SQLException e) {
	e.printStackTrace();
}