Java程序将从数据库中读取,但不会写入它

时间:2012-12-05 16:58:13

标签: java mysql database

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

可能是我未能设置连接的设置?或者也许它不可能,因为db托管在godaddy的服务器上?

任何帮助都很棒!

感谢。

以下是一些相关代码:
连接到db:

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')");

2 个答案:

答案 0 :(得分:3)

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

FROM 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 而不是简单的语句来使用 JDBC 执行 SQL 。< / p>

答案 1 :(得分:0)

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