Can not issue data manipulation statements with executeQuery()ソリューション

2075 ワード

MySQLデータベース接続後、表構造作成文を実行します.javaコードは次のとおりです.
        String driver = "com.mysql.jdbc.Driver"; //   mysql       
	String url = "jdbc:mysql://" + dataSource.getDataSourceIp() + ":" + dataSource.getDataSourcePort() + "/" + dataSource.getDataSourceName()
					+ "?characterEncoding=" + dataSource.getCharacterSet(); //      
	String userName = dataSource.getDataSourceUser();//   mysql    
	String password = dataSource.getDataSourcePwd();//   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();
	}

エラーメッセージは次のとおりです.
Can not issue data manipulation statements with executeQuery()
デバッグされたのは、create,updateを実行する場合、insertのsql文はstatementのexecute()メソッドを使用すべきであり、statementのexecuteQuery()を使用すると控訴問題が発生するためである.
変更されたjavaコードは次のとおりです.
String driver = "com.mysql.jdbc.Driver"; //   mysql       
String url = "jdbc:mysql://" + dataSource.getDataSourceIp() + ":" + dataSource.getDataSourcePort() + "/" + dataSource.getDataSourceName()+ "?characterEncoding=" + dataSource.getCharacterSet(); //      
String userName = dataSource.getDataSourceUser();//   mysql    
String password = dataSource.getDataSourcePwd();//   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();
}