mvc 那么反问,如果是你,怎么用jdbc处理
数据是放在数据库的,这里可能数据库里面没有数据。
所以我们先假设数据库里面有数据开始,那么最常用的就是查询数据库里面的数据。
回顾我们之前的查询一个东西,要么是定义一个变量来引用 这个变量在内存中的地址来引用变量的实际值。输出到页面。
现在变量的实际值保存在硬盘的数据库中,所以需要先用jdbc将数据库中的 数据存到内存中。这里可以把表映射到类,一行数据代表类中的一个对象。
所以我们要做的有两点:一是将表与类对应起来,而是将对象放入类中(假如表中已有数据)。
jdbc解决了第一种问题吗? 通过jdbc可以创建一个stmt对象,来包装sql语句,对数据库进行处理。返回一个对象集合??数据集。
这里因为sql语句有很多种,要分别讨论:
所以先假设此时的sql语句是查询语句,并且先假设查询语句为select * from table_name ;
返回的结果集 ResultSet rs 应该是一个对象数组(集合)。
而又有while(rs.next())可以遍历这个对象集合。(还有其他方法吗?)
然后调用rs (rs是一行还是整个表?这点很重要)
然后调用rs的get方法,获取行的单位格数据。
同时也要建一个与表对应的类。定义一个实例化对象,但没有初值。
设置对象的属性set方法,用行的单位格属性内容分别设置该对象的内容。然后这个对象就有了初值,可以代表表的一行。
但是这个遍历是整个表,也就是说rs代表所有行,在所有行移动,是一个行对象变量。
然后我们设置一个类对象列表(集合),利用列表的添加方法,将这个对象加入到列表中。
遍历完成之后,那么这个列表List就可以代表整个表了。
这样我们完成了 将硬盘中的表中的 数据 放在程序的内存中了!
第二步,我们将内存中的,或者有具体对象的列表List中的数据,输出根据指令输出到页面。
1,最简单是遍历直接输出每个对象,调用get方法获取每个对象的所有属性。那么这时候,就完成了一个简单的数据库的数据输出到 页面。
2,在稍微难一点,就是根据用户的输入指令来,选择输出。假如之前全部加载表数据,那么此时就不关数据库和sql语句的事了。但是当数据很大时,有时候不需要全部数据,为了效率,可能需要根据用户的指令,来选择性加载 数据库中的数据到类对象列表(集合)中了。
假如还是查询,现在需要解决的是,根据用户的查询,来加载sql查询语句。所以sql语句不能写死,用参数代替。
你不能要求用户写一个sql语句,所以要包装sql语句。为一个方法。然而考虑到,sql语句只能通过stmt对象来包装才能在java中使用。
所以写设置一个用户的查询方法。在方法里面写 stmt对象,那么此时就要获得一个连接(这里单例模式什么什么的,现在还不懂)。
因为用户的查询方法很多种,需要具体化,到底根据什么来查。
假设根据id,其实是和 sql语句一样的,写一个对应sql语句,只不过此时id有很多,值不定,需要用户 指定。所以将id设置为变量,由屏幕输入决定。
那么sql语句中相应的by id = ?。?号需要等会设置为id变量。
那么只需要加载该id的rs,此时是不是rs只有一行,是一个对象,而不是集合。(错了,也可能出现两个重名的,如果不是根据主键id查询)
得到这个对象,由于遍历的时候得到,那么遍历的时候输出,就不需要存到List中了?
以上,应该是解决了 所有的查询问题。
孜孜不倦,必能求索;风尘仆仆,终有归途。