0

我有一个 Java 程序可以成功连接到 Godaddy 服务器上托管的 mysql 数据库。我可以毫无问题地从该数据库读取,但是,当我尝试使用 INSERT 或 UPDATE 写入它时,查询不会执行。我正在使用通过 godaddy 设置的“管理员”帐户,我意识到这不是 root 帐户。我已经检查并确认连接不是只读的,并且在查询运行时已注销 phpmyadmin。我不确定我还能尝试什么,或者是否有人遇到过这个问题。

也许是我未能设置的连接设置?或者因为数据库托管在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

使用 statement.executeUpdate() 执行 INSERT 查询。

来自Statement.executeUpdate(String sql)的 API :

执行此 PreparedStatement 对象中的 SQL 语句,该语句必须是 SQL 数据操作语言 (DML) 语句,例如 INSERT、UPDATE 或 DELETE;或不返回任何内容的 SQL 语句,例如 DDL 语句。

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

强烈建议您使用PreparedStatemnt而不是简单的 Statement 来使用JDBC执行SQL

于 2012-12-05T16:59:58.383 回答
0

用于实例化连接对象的用户名和密码,只有从数据库读取的权限,不能写入。您需要更改连接数据库的凭据,或者您需要向相关用户提供权限

于 2012-12-05T17:01:10.520 回答