[英]Java program will read from database, but not write to it
我有一个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')");
使用statement.executeUpdate()进行INSERT查询。
FROM API的Statement.executeUpdate(String sql) :
在此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 。
用来实例化连接对象的用户名和密码仅具有从数据库读取的权限,而没有写权限。 您需要更改用于连接数据库的凭据,或者需要向相关用户提供权限
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.