你的ID定义的是Goddess类型,你这里输入的应该是id.getId()
执行了 excuteQuery() 方法后返回的是查询到的记录的集合,以行为单位,然后通过这集合的 next() 方法一条条取出数据,也就是每次取出一个记录,然后对记录的每个字段分别操作。
特别注意SQL语句的符号和字符串拼接时若两个SQL字符串必须空格的注意空格,再就是检查一下数据库是否正确创建。
比如很容易把SQL语句写成以下这样:
String sql = "update imooc_goddess set user_name,...";
当输入中文的符号很难辨别,见你你在SQL上执行一遍update以下数据,再复制到Java代码改成参数形式。
以下是参考代码,实测没问题:
String sql = " update imooc_goddess " + " set user_name=?,sex=?,age=?,birthday=?,email=?,mobile=?, " + " update_user=?,update_date=current_date(),isdel=? " + " where id=? ";
在建立数据库和表的设置注意设置编码方式为utf8
在连接数据库时也标明编码方式:"jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf8"
你之前的代码没注释掉吧
应该把报错贴出来啊
g忘记实例化了
有多少输出多少,是因为你查询语句没有限制条件。每行记录数据都是相同,有以下两个可能:
你插入了相同的数据源
在插入新数据时,没有清空数据对象。即在每次新增数据时,需要将数据对象置为null(给默认值)。
public class Test(){ public static void main(String[],args){ System.out.println("这个错误是提示你的sql语句有问题,而且是在这一句的附近有问题!"); } }
原因是MySQL在高版本需要指明是否进行SSL连接。解决方案如下:
在mysql连接字符串url中加入ssl=true或者false即可,如下所示。
url=jdbc:mysql://127.0.0.1:3306/framework?characterEncoding=utf8&useSSL=true
试着写了一下,两种都对的。
String sql="" +
" select * from imooc_goddess" +
" where user_name like ? and mobile like ? and email like ? ";
System.out.println("sql:"+sql);
PreparedStatement ptmt=conn.prepareStatement(sql);
不是前边补空格吗 String sql里面每一行前边
// 拼写sql语句
String sql = "" +
" selete * from imooc_goddess "
+ " set user_name=?,sex=?,age=?,birthday=?,email=?,mobile=?, "
+ " update_user=?,update_date=current_date(),isdel=? "
+ " where id=? ";
?在第一行要有,后面要给这些属性赋值,第一个属性赋值为任意类型的字符串,所以要用?表示
我自己找到如何遍历女神信息的方法了!老师估计是漏录了部分代码。
以下是GoddessAction中,利用Field类遍历所查找女神信息的方法:
for(int i=0;i<gs.size();i++){ System.out.println("******第"+(i+1)+"条记录******"); for(Field f:gs.get(i).getClass().getDeclaredFields()){ //private字段需要先获取权限 f.setAccessible(true); //注意get方法括号内是类类型的实例(obj或类名.Class.newInstance()) System.out.println(f.getName()+"="+f.get(gs.get(i)));//之前报错写的是f.get(f) } }
这是SQLException,我猜你应该是在更新信息的时候出的,表中id最大的为3,但是你要把数据更新在id位4的上面
update 不需要into
主要是讲的JDBC,其他的知识点可以在其他课上先学习。还有,学习的时候最好一边听一边动手跟着写。
exception包含SQLexception,也就是说SQLexception是exception的子集
他是卸载引号里面的,怎么会报错。。
每次返回的都是一个结果集,哪怕结果集是只有一个元素
问题已经被我查找API帮助文档解决了,删除功能代码块没有问题,出问题的是查询功能代码块里面,executeQuery方法不应该传入参数,将括号里面的String字符串去掉即可,希望各位对各位同学有帮助。
没刷新吧
update女神信息报错了
你指定了10个问号(占位符),却只赋了9个值,所以出错了哦。
。。。同学你的想法很好,据我所知,已经有这样子的框架实现了,就是DBUtils框架。实现起来也不复杂,很好用,有兴趣的话,去学习下也很不错。
望采纳,谢谢。
检查你的数据库中的数据,ID=8是否存在
执行语句的参数id没传进去,把ps=setInt(1,id)放在executequuery前面
几个问号对应几个set