编写程序:

创建一个类DBTools,在DBTools中创建一个方法find,find方法用于对数据库进行查询操作,现在要求将结果集封装成数组线性表嵌套数组的形式:

ArrayList<String[]> rsList = new ArrayList<String[]>()形式

其中:    String[] 用于存储一行记录的所有字段(的值)

rsList存储所有的数组(String[]),即记录的总数

1,需要先创建一个用户的基本信息作为一个类,这样在其他类中可以直接定义为此类类型的对象。

 package com.xt.java.base25;

 public class User {

     private String userId;

     private String userName;

     private String password;

     private String email;

     private String telNo;

     private String gender;

     private String memo;

     private double salary;

     /**
* @return the userId
*/
public String getUserId() {
return userId;
} /**
* @param userId the userId to set
*/
public void setUserId(String userId) {
this.userId = userId;
} /**
* @return the userName
*/
public String getUserName() {
return userName;
} /**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
} /**
* @return the password
*/
public String getPassword() {
return password;
} /**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
} /**
* @return the email
*/
public String getEmail() {
return email;
} /**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
} /**
* @return the telNo
*/
public String getTelNo() {
return telNo;
} /**
* @param telNo the telNo to set
*/
public void setTelNo(String telNo) {
this.telNo = telNo;
} /**
* @return the gender
*/
public String getGender() {
return gender;
} /**
* @param gender the gender to set
*/
public void setGender(String gender) {
this.gender = gender;
} /**
* @return the memo
*/
public String getMemo() {
return memo;
} /**
* @param memo the memo to set
*/
public void setMemo(String memo) {
this.memo = memo;
} /**
* @return the salary
*/
public double getSalary() {
return salary;
} /**
* @param salary the salary to set
*/
public void setSalary(double salary) {
this.salary = salary;
} /* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName + ", password=" + password + ", email=" + email
+ ", telNo=" + telNo + ", gender=" + gender + ", memo=" + memo + ", salary=" + salary + "]";
} }

2,创建一个数据库databases access objected和数据库建立联系直接调用,这样写一次就行了

package com.xt.java.base25;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class UserDAO {
private Connection conn;
private Statement stat;
private String url="jdbc:mysql://localhost:3306/lyxdatabases";
private String dbDriver="com.mysql.jdbc.Driver";
private String userName="root";
private String password="1234";
//私有的构造方法,只有在本类中可以进行实例化一次,为了保护用户的隐私使用这种方法,切记!!!
private UserDAO(){ } private static UserDAO uda=null;
/**
* 写一个方法,从方法中获得实例,只能实例化一次。
*/ public static UserDAO getUserDAO(){
if(uda==null){
uda=new UserDAO();
}
return uda;
} public Connection getConnection() throws Exception{
try {
Class.forName(dbDriver);
return DriverManager.getConnection(url,userName,password);
} catch (ClassNotFoundException e) {
throw new ClassNotFoundException("数据库找不到驱动!!");
} catch (SQLException e) {
throw new SQLException("数据库连接异常!!");
}
} //关闭Connection
public void closeConnection(Connection conn){
try{
if(conn!=null){
conn.close();
} }catch(Exception e){
System.out.println(e);
}
} //关闭Statement
public void closeStatement(Statement stat){
try{
if(stat!=null){
stat.close();
} }catch(Exception e){
System.out.println(e);
}
}
//关闭ResultSet
public void closeResultSet(ResultSet rs){
try{
if(rs!=null){
rs.close();
} }catch(Exception e){
System.out.println(e);
}
}
}

3

创建一个类DBTools,在DBTools中创建一个方法find,find方法用于对数据库进行查询操作,现在要求将结果集封装成数组线性表嵌套数组的形式:

ArrayList<String[]> rsList = new ArrayList<String[]>()形式

package com.xt.java.base25;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator; /**
* 创建一个类DBTools,在DBTools中创建一个方法find,find方法用于对数据库进行查询操作,
* 现在要求将结果集封装成数组线性表嵌套数组的形式:
ArrayList<String[]> rsList = new ArrayList<String[]>()形式
其中: String[] 用于存储一行记录的所有字段(的值)
rsList存储所有的数组(String[]),即记录的总数 * @author LENOVO
*
*/
public class DBtools {
Connection conn;
Statement stat;
ResultSet rs;
UserDAO udao=UserDAO.getUserDAO(); public void find(String userID){
ArrayList<String> rsList=new ArrayList<String>(20);
String sql="select*from user where userID="+userID; try {
conn=udao.getConnection();
stat=conn.createStatement();
rs=stat.executeQuery(sql);
while(rs.next()){
User user=new User();
user.setUserId(rs.getString(1));
user.setUserName(rs.getString(2));
user.setPassword(rs.getString(3));
user.setEmail(rs.getString(4));
user.setTelNo(rs.getString(5));
user.setGender(rs.getString(6));
user.setMemo(rs.getString(7));
user.setSalary(rs.getDouble(8)); rsList.add(user.toString());
}
Iterator<String> iterator=rsList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
udao.closeResultSet(rs);
udao.closeStatement(stat);
udao.closeConnection(conn);
} }
public static void main(String[] args) {
DBtools dbt=new DBtools();
dbt.find("123"); } }

JDBC24homework的更多相关文章

随机推荐

  1. Amdahl定律和可伸缩性

    性能的思考 提升性能意味着可以用更少的资源做更多的事情.但是提升性能会带来额外的复杂度,这会增加线程的安全性和活跃性上的风险. 我们渴望提升性能,但是还是要以安全为首要的.首先要保证程序能够安全正常的 ...

  2. SPOJ AMR12B 720

    这个题应该是个优先队列的模版题 当时比赛的时候没时间做先贴一下大神的代码好好学习学习 B - Gandalf vs the Balrog Time Limit:2000MS     Memory Li ...

  3. 清空Linux缓存

    清空Linux的缓存 sync > /proc/sys/vm/drop_caches > /proc/sys/vm/drop_caches > /proc/sys/vm/drop_c ...

  4. Oracle存储过程、游标、函数

    SQL99是什么 (1)是操作所有关系型数据库的规则 (2)是第四代语言 (3)是一种结构化查询语言 (4)只需发出合法合理的命令,就有对应的结果显示 SQL的特点 (1)交互性强,非过程化 (2)数 ...

  5. idea忽略隐藏文件、文件夹的设置操作

    左上角setting 如果要忽略文件夹,则直接填写文件夹名字即可,例如:要忽略target文件夹[建议:尽量不要把target忽略,因为可能编译出问题排查,还需要查看target文件夹中的编译结果] ...

  6. vue引入插件方法

    jQuery插件npm install jquery --save-dev 需要用jQuery的文件中引入:import $ from 'jquery' 轮播图插件安装:npm install vue ...

  7. MATLAB学习(八)神经网络拟合工具箱 Neural Net Fitting使用示例

    >> x=-3:0.2:5;y=x.^2-1;xn=-2:0.1:7; >>     >> %多元函数(z=sin(x2+y2)/(x2+y2))拟合 >&g ...

  8. docker命令小结

    文档:docker命令小结.note链接:http://note.youdao.com/noteshare?id=54015b76db9ae764182cb921e348b7fc&sub=DD ...

  9. k8s local volume 和host path volume的区别

    k8s提供多种volume接口,其中local 和host path是容易混淆的两个接口.下面这篇文章解释了两者的区别: https://groups.google.com/forum/#!topic ...

  10. HTML5 DOM 新增数据类型

    HTML5 DOM 新增数据类型 前言 相对于HTML4当中的DOM,在HTML5中的DOM,新增了很多复杂数据类型,为实际的应用提供了便捷的操作. 在HTML5 DOM中,新增了如下的内容: HTM ...