2017-05-19 12 views
0

NetBeansからMySQLデータベース用の新しいユーザーを作成したいのですが、そのコアコードがわかりません。JavaでMySQL用の新しいユーザーを作成するには?

私が試した

try { 

    String query = "CREATE USER = '?' @'localhost' IDENTIFIED BY = '?'; "; 

    con = DriverManager.getConnection(url, uname, pwd); 
    PreparedStatement pstmnt = con.prepareStatement(query); 

    pstmnt.setString(1, newUser[0]); 
    pstmnt.setString(2, newUser[3]); 

    pstmnt.execute(); 
    pstmnt.close(); 

} catch (SQLException ex) { 
    ex.printStackTrace(); 
} 

出力は次のとおりです。

java.sql.SQLException: 
Parameter index out of range (1 > number of parameters, which is 0). 

私はMySQLの中で、あなたが使用して新規ユーザーを作成することができます知っている:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost'; 
+0

あなたの質問は何ですか?これに基づいて、準備された文の構文は間違っています:https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html –

+0

netbeansを使用してmysqlに新しいテーブルを作成しますか? – Pradeep

+0

少なくともこのコードを試しましたか?出力は何ですか? – guenhter

答えて

0

TimSolo How To have Dynamic SQL in MySQL Stored Procedure状態が5.0.13以降、ストアドプロシージャでは、

を使用できます。
dynamic sql 

Omesh MySQL CREATE USER with a variable?は、新しいユーザーを作成するには、動的SQLを使用して、権限の付与

私の調合には、新規ユーザーを作成するための次の応答を生成するために

stored procedures + dynamic sql 

を使用しています。

CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`(IN username VARCHAR(250), IN pwd VARCHAR (100)) 
BEGIN 

SET @s = CONCAT('CREATE USER "',username,'"@"localhost" IDENTIFIED BY "',pwd,'"'); 
PREPARE stmt FROM @s; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
END 
関連する問題