我有一个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')");
答案 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)
用于实例化连接对象的用户名和密码,只有从数据库读取的权限才能写入。 您需要更改连接到数据库的凭据,或者需要向相关用户提供权限