0

Godaddy のサーバーでホストされている mysql データベースに正常に接続する Java プログラムがあります。そのデータベースから問題なく読み取ることができますが、たとえば INSERT または UPDATE で書き込もうとすると、クエリは実行されません。Godaddy で設定した「admin」アカウントを使用していますが、これは root アカウントではないことに気付きました。接続が読み取り専用ではないことを確認し、クエリの実行中に phpmyadmin からログアウトしました。他に何を試すことができるか、または誰かがこの問題を経験したことがあるかどうかはわかりません。

たぶん、設定に失敗した接続への設定ですか?それとも、db が godaddy のサーバーでホストされているため、不可能でしょうか?

どんな助けでも素晴らしいです!

ありがとう。

ここにいくつかの関連コードがあります:
データベースへの接続:

Connection con;
public DBconnection(String url, String user, String pass)
{
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection (url,user,pass);


            if(!con.isClosed())
                System.out.println("connecton open");
        } 
        catch (InstantiationException e) {e.printStackTrace();} 
        catch (IllegalAccessException e) {e.printStackTrace();} 
        catch (ClassNotFoundException e) {e.printStackTrace();} 
        catch (SQLException e) {e.printStackTrace();}
}

クエリを送信:

public ResultSet executeQuery(String query)
{
    ResultSet rs = null;

    try {
        Statement stmt = (Statement) con.createStatement();
        rs = stmt.executeQuery(query);

        //while(rs.next())
            //System.out.println(rs.getString("ticket_num"));
    } 
    catch (SQLException e) {}   

    return rs;
}

クエリの挿入 (phpmyadmin で動作):

conn.executeQuery("INSERT INTO tickets VALUES(55555,'12/01/2012','me','reports','test','','','0','Nope')");
4

2 に答える 2

3

INSERTクエリを実行するには、statement.executeUpdate()を使用します。

Statement.executeUpdate(String sql)のFROM API :

このPreparedStatementオブジェクトでSQLステートメントを実行します。これは、INSERT、UPDATE、DELETEなどのSQLデータ操作言語(DML)ステートメントである必要があります。または、DDLステートメントなどの何も返さないSQLステートメント。

 executeUpdate("INSERT INTO tickets VALUES(55555,'12/01/2012','me','reports','test','','','0','Nope')");

また、 JDBCを使用してSQLを実行するには、単純なステートメントではなく、PreparedStatemntを使用することを強くお勧めします。

于 2012-12-05T16:59:58.383 に答える
0

接続オブジェクトのインスタンス化に使用するユーザー名とパスワードには、データベースからの読み取り権限のみがあり、書き込み権限はありません。データベースに接続するための資格情報を変更するか、関係するユーザーに権限を付与する必要があります

于 2012-12-05T17:01:10.520 に答える