作者newbornme (我爱你我爱你)
看板java
标题[问题] 有关 java 程式内的 sql 语法
时间Sat Apr 8 01:32:47 2006
我有一个让我很困扰的状况 ...
我 xxx.java程式内的sql语法,除了select功能以外,
其他的 insert、delete 都不能执行,update还没试,因为猜应该也不行。
JBuilder2005底下跑也不行,
但很奇怪,如果用里面的 Database pilot连过去做上面的任何一个指令都没问题,
用的不是同一种 connection 吗?
用mysql内的command line直接打语法也没问题,
phpmyadmin底下输入insert语法也生的出新资料,就写在code内不行。
用mysqladmin看过权限,所有的资料库存取动作都grant了。
我是用JDBC(mysql-connector-java-3.1.12-bin.jar)
作为程式与mysql资料库间沟通的桥梁。
以下是我的错误讯息,第二行是我打了什麽SQL语法进去。
後面并附上程式码,
可以请大家帮我想想问题可能在哪里吗?感激感激。
(我测的快发疯了 ... = =)
-
资料库连线成功
DELETE FROM testtest // print SQL command
资料库连结错误,请检查资料库状态.
handle the error.
SQLException:Can not issue data manipulation statements with executeQuery().
SQLState:S1009
VendorError:0
-
import java.sql.*;
public class Temp{
public static void main(String[] args){
String sql = "DELETE from testtest"; // fail
//String sql = "INSERT INTO testtest(temp_int)"
// + "VALUES('1')";" // fail
//String sql = "SELECT * from testtest"; // only this ok
Statement statement = null;
ResultSet rs = null;
try{
//载入MySQL Driver
Class.forName("com.mysql.jdbc.Driver");
//进行连线
Connection MyConn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test","id","passwd");
System.out.println("资料库连线成功");
statement = MyConn.createStatement();
rs = statement.executeQuery(sql);
// process query results
StringBuffer results = new StringBuffer();
ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
for ( int i = 1; i <= numberOfColumns; i++ )
{
results.append(metaData.getColumnName(i) + "\t");
}
results.append( "\n" );
while ( rs.next() )
{
for ( int i = 1; i <= numberOfColumns; i++ )
{
Object obj;
obj = rs.getObject(i);
results.append(obj.toString());
results.append("\t");
}
results.append( "\n" );
}
}catch(ClassNotFoundException e){
System.out.println("找不到连线类别档案");
e.printStackTrace();
}catch(SQLException e){
System.out.println("资料库连结错误,请检查资料库状态.");
System.out.println("handle the error");
System.out.println("SQLException: " + e.getMessage());
System.out.println("SQLState: " + e.getSQLState());
System.out.println("VendorError: " + e.getErrorCode());
}
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.194.232
※ 编辑: newbornme 来自: 140.113.194.232 (04/08 01:36)