驱动已经成功加载
mysql也处于启动状态,在的命令行登陆时正常用
用mysql-front登陆127.0.0.1我的数据库也很正确
但是在程序里面执行各种操作时总是有异常
java.sql.SQLException: Can not issue data manipulation statements with executeQuery()
另外查询出来的结果全部是null,好像根本没有结果
附部分代码供参考:
url = "jdbc:mysql://127.0.0.1:3306/WangGang";
con = DriverManager.getConnection(url);
System.out.println("Connection Established");
stmt=con.createStatement();
String sql = "create table mmmm";//我想建这个表,结果出现了异常,如果不建这个表直接
stmt.executeQuery(sql); //向下执行,结果出来全是null
rs=stmt.executeQuery("select * from books");//books是我已经建好的表,里面有数据
while(rs.next()){
String co1=rs.getString(1);
String co2=rs.getString(2);
String co3=rs.getString(3);
String co4=rs.getString(4);
String co5=rs.getString(5);
}
多谢啦~~~~~给100分
13 个解决方案
#1
stmt.executeQuery(sql); 这行有问题,你上面的是建表语句,不是查询语句,可以用:
Statement.executeUpdate(sql) 或 Statement.execute(sql)
(象update,delete之类操作都不该用executeQuery,select 语句才用这个)
Statement.executeUpdate(sql) 或 Statement.execute(sql)
(象update,delete之类操作都不该用executeQuery,select 语句才用这个)
#2
自己顶
#3
这个句子已经改了,已经成功执行建表和插入什么的操作了
可是为什么我的查询结果是null呢??
这个问题再解决了
100分就是你的了兄弟
谢谢~~~
可是为什么我的查询结果是null呢??
这个问题再解决了
100分就是你的了兄弟
谢谢~~~
#4
你数据库没连错吧(是本机的),你直接进入到本机的WangGang数据库里:mysql>select * from books,看看是不是有记录的。你在while(rs.next()){}里面System.out.println("col1="+col1)看是不是null啊
#5
在本机命令行的 mysql>select * from books
能正确打印出我的表~~
换成 ("col1="+col1) 也是null
这么换和以前不一样么?就是加了个字符串吧
能正确打印出我的表~~
换成 ("col1="+col1) 也是null
这么换和以前不一样么?就是加了个字符串吧
#6
单就看你上面贴的那点代码看不出什么,我试了连本机的mysql,也建了books,就你上面的哪个查询,基本一样的代码,一点问题都没有,所有col都是有值的,不知道你是怎么弄的。
#7
终于搞定了
是这样的,我前面的代码已经声明了
String co1;
String co2;
String co3;
下面又出现了
while(rs.next()){
String co1=rs.getString(1);//把这三个String去掉后就好了
String co2=rs.getString(2);//难道前面声明了后面再声明就不行了么?
String co3=rs.getString(3);//看来我的java基本知识的理解还很不够啊
}
虽然最后出来结果了,但是String把我搞糊涂了
是这样的,我前面的代码已经声明了
String co1;
String co2;
String co3;
下面又出现了
while(rs.next()){
String co1=rs.getString(1);//把这三个String去掉后就好了
String co2=rs.getString(2);//难道前面声明了后面再声明就不行了么?
String co3=rs.getString(3);//看来我的java基本知识的理解还很不够啊
}
虽然最后出来结果了,但是String把我搞糊涂了
#8
呵呵,我说嘛,我就拿你那做了试验,明明正常的吗,前面我是没定义这几个变量,只是输出测试了下
#9
你前面已经声明了(不太清楚具体位置,应该是全局变量了)
String co1;
String co2;
String co3;
做为全局变量对全局有效,而
while(rs.next()){
String co1=rs.getString(1);
String co2=rs.getString(2);
String co3=rs.getString(3);
String co4=rs.getString(4);
String co5=rs.getString(5);
}
里面声明的变量只在这个while循环中有效,这等于是不同的变量了,如果你在这个while循环中用System.out.println("co1="+co1),输出应该是有值的,但是你在循环体外输出,系统会认为你输出的是最前面定义那些全局变量,而这些全局变量你是没有赋值的,你把循环体中的String去掉了,那就代表循环体中的变量就是前面你定义的全局变量了,后面再输出当然有值了。
String co1;
String co2;
String co3;
做为全局变量对全局有效,而
while(rs.next()){
String co1=rs.getString(1);
String co2=rs.getString(2);
String co3=rs.getString(3);
String co4=rs.getString(4);
String co5=rs.getString(5);
}
里面声明的变量只在这个while循环中有效,这等于是不同的变量了,如果你在这个while循环中用System.out.println("co1="+co1),输出应该是有值的,但是你在循环体外输出,系统会认为你输出的是最前面定义那些全局变量,而这些全局变量你是没有赋值的,你把循环体中的String去掉了,那就代表循环体中的变量就是前面你定义的全局变量了,后面再输出当然有值了。
#10
多谢你帮忙,帮我弄明白了不少问题]
最后还把基础知识学习了一下,100分给你啦~~~~
再次感谢
对了,还想问问你是做什么的,好像一直在线啊
最后还把基础知识学习了一下,100分给你啦~~~~
再次感谢
对了,还想问问你是做什么的,好像一直在线啊
#11
还有一件事情想问问你,就是关于mysql的驱动问题
我这里一共有两个:
目录结构如下:
mysqldriver\com\mysql\jdbc
mysqldriver\org\gjt\mm\mysql
后者里面只有一个Driver的class文件,而前者里面除了Driver外还有很多
这两个驱动有什么区别么?为什么这样放着呢?还有,如果我用Tomcat和Jsp的话使用哪个驱动呢?
我这里一共有两个:
目录结构如下:
mysqldriver\com\mysql\jdbc
mysqldriver\org\gjt\mm\mysql
后者里面只有一个Driver的class文件,而前者里面除了Driver外还有很多
这两个驱动有什么区别么?为什么这样放着呢?还有,如果我用Tomcat和Jsp的话使用哪个驱动呢?
#12
我做软件的
mysql JDBC Driver
常用的有两个,一个是gjt(Giant Java Tree)组织提供的mysql驱动,其JDBC Driver名称(JAVA类名)为:org.gjt.mm.mysql.Driver
详情请参见网站:http://www.gjt.org/
或在本网站下载mysql JDBC Driver(mm.jar)
另一个是mysql官方提供的JDBC Driver,其JAVA类名为:com.mysql.jdbc.Driver
驱动下载网址:http://dev.mysql.com/downloads/,进入其中的MySQL Connector/J区域下载。
mysql 最新提供的JDBC驱动已经建议改用com.mysql.jdbc.Driver了
mysql JDBC Driver
常用的有两个,一个是gjt(Giant Java Tree)组织提供的mysql驱动,其JDBC Driver名称(JAVA类名)为:org.gjt.mm.mysql.Driver
详情请参见网站:http://www.gjt.org/
或在本网站下载mysql JDBC Driver(mm.jar)
另一个是mysql官方提供的JDBC Driver,其JAVA类名为:com.mysql.jdbc.Driver
驱动下载网址:http://dev.mysql.com/downloads/,进入其中的MySQL Connector/J区域下载。
mysql 最新提供的JDBC驱动已经建议改用com.mysql.jdbc.Driver了
#13
太感谢了,不知道说什么好了,给分了
#1
stmt.executeQuery(sql); 这行有问题,你上面的是建表语句,不是查询语句,可以用:
Statement.executeUpdate(sql) 或 Statement.execute(sql)
(象update,delete之类操作都不该用executeQuery,select 语句才用这个)
Statement.executeUpdate(sql) 或 Statement.execute(sql)
(象update,delete之类操作都不该用executeQuery,select 语句才用这个)
#2
自己顶
#3
这个句子已经改了,已经成功执行建表和插入什么的操作了
可是为什么我的查询结果是null呢??
这个问题再解决了
100分就是你的了兄弟
谢谢~~~
可是为什么我的查询结果是null呢??
这个问题再解决了
100分就是你的了兄弟
谢谢~~~
#4
你数据库没连错吧(是本机的),你直接进入到本机的WangGang数据库里:mysql>select * from books,看看是不是有记录的。你在while(rs.next()){}里面System.out.println("col1="+col1)看是不是null啊
#5
在本机命令行的 mysql>select * from books
能正确打印出我的表~~
换成 ("col1="+col1) 也是null
这么换和以前不一样么?就是加了个字符串吧
能正确打印出我的表~~
换成 ("col1="+col1) 也是null
这么换和以前不一样么?就是加了个字符串吧
#6
单就看你上面贴的那点代码看不出什么,我试了连本机的mysql,也建了books,就你上面的哪个查询,基本一样的代码,一点问题都没有,所有col都是有值的,不知道你是怎么弄的。
#7
终于搞定了
是这样的,我前面的代码已经声明了
String co1;
String co2;
String co3;
下面又出现了
while(rs.next()){
String co1=rs.getString(1);//把这三个String去掉后就好了
String co2=rs.getString(2);//难道前面声明了后面再声明就不行了么?
String co3=rs.getString(3);//看来我的java基本知识的理解还很不够啊
}
虽然最后出来结果了,但是String把我搞糊涂了
是这样的,我前面的代码已经声明了
String co1;
String co2;
String co3;
下面又出现了
while(rs.next()){
String co1=rs.getString(1);//把这三个String去掉后就好了
String co2=rs.getString(2);//难道前面声明了后面再声明就不行了么?
String co3=rs.getString(3);//看来我的java基本知识的理解还很不够啊
}
虽然最后出来结果了,但是String把我搞糊涂了
#8
呵呵,我说嘛,我就拿你那做了试验,明明正常的吗,前面我是没定义这几个变量,只是输出测试了下
#9
你前面已经声明了(不太清楚具体位置,应该是全局变量了)
String co1;
String co2;
String co3;
做为全局变量对全局有效,而
while(rs.next()){
String co1=rs.getString(1);
String co2=rs.getString(2);
String co3=rs.getString(3);
String co4=rs.getString(4);
String co5=rs.getString(5);
}
里面声明的变量只在这个while循环中有效,这等于是不同的变量了,如果你在这个while循环中用System.out.println("co1="+co1),输出应该是有值的,但是你在循环体外输出,系统会认为你输出的是最前面定义那些全局变量,而这些全局变量你是没有赋值的,你把循环体中的String去掉了,那就代表循环体中的变量就是前面你定义的全局变量了,后面再输出当然有值了。
String co1;
String co2;
String co3;
做为全局变量对全局有效,而
while(rs.next()){
String co1=rs.getString(1);
String co2=rs.getString(2);
String co3=rs.getString(3);
String co4=rs.getString(4);
String co5=rs.getString(5);
}
里面声明的变量只在这个while循环中有效,这等于是不同的变量了,如果你在这个while循环中用System.out.println("co1="+co1),输出应该是有值的,但是你在循环体外输出,系统会认为你输出的是最前面定义那些全局变量,而这些全局变量你是没有赋值的,你把循环体中的String去掉了,那就代表循环体中的变量就是前面你定义的全局变量了,后面再输出当然有值了。
#10
多谢你帮忙,帮我弄明白了不少问题]
最后还把基础知识学习了一下,100分给你啦~~~~
再次感谢
对了,还想问问你是做什么的,好像一直在线啊
最后还把基础知识学习了一下,100分给你啦~~~~
再次感谢
对了,还想问问你是做什么的,好像一直在线啊
#11
还有一件事情想问问你,就是关于mysql的驱动问题
我这里一共有两个:
目录结构如下:
mysqldriver\com\mysql\jdbc
mysqldriver\org\gjt\mm\mysql
后者里面只有一个Driver的class文件,而前者里面除了Driver外还有很多
这两个驱动有什么区别么?为什么这样放着呢?还有,如果我用Tomcat和Jsp的话使用哪个驱动呢?
我这里一共有两个:
目录结构如下:
mysqldriver\com\mysql\jdbc
mysqldriver\org\gjt\mm\mysql
后者里面只有一个Driver的class文件,而前者里面除了Driver外还有很多
这两个驱动有什么区别么?为什么这样放着呢?还有,如果我用Tomcat和Jsp的话使用哪个驱动呢?
#12
我做软件的
mysql JDBC Driver
常用的有两个,一个是gjt(Giant Java Tree)组织提供的mysql驱动,其JDBC Driver名称(JAVA类名)为:org.gjt.mm.mysql.Driver
详情请参见网站:http://www.gjt.org/
或在本网站下载mysql JDBC Driver(mm.jar)
另一个是mysql官方提供的JDBC Driver,其JAVA类名为:com.mysql.jdbc.Driver
驱动下载网址:http://dev.mysql.com/downloads/,进入其中的MySQL Connector/J区域下载。
mysql 最新提供的JDBC驱动已经建议改用com.mysql.jdbc.Driver了
mysql JDBC Driver
常用的有两个,一个是gjt(Giant Java Tree)组织提供的mysql驱动,其JDBC Driver名称(JAVA类名)为:org.gjt.mm.mysql.Driver
详情请参见网站:http://www.gjt.org/
或在本网站下载mysql JDBC Driver(mm.jar)
另一个是mysql官方提供的JDBC Driver,其JAVA类名为:com.mysql.jdbc.Driver
驱动下载网址:http://dev.mysql.com/downloads/,进入其中的MySQL Connector/J区域下载。
mysql 最新提供的JDBC驱动已经建议改用com.mysql.jdbc.Driver了
#13
太感谢了,不知道说什么好了,给分了