代码我就不看了 直接给你找段类似的
拷下以前写的论文中部分
232 使用JDBC的一般流程
加载某个数据库的驱动(Driver类)
通常使用ClassforName(“驱动的类名“);
连接数据库
Connection con = DriverManagergetConnection(url,username,password);
得到会话
Statement stmt = concreateStatement();
执行 *** 作
Result rs = stmtexecuteQuery(“SQL查询语句”);
5 处理结果
while(rsnext()){
String col1 = rsgetString(1);
……
}
XxxDao接口的设计
XxxDao是数据持久化层对数据库进行 *** 作的接口。所有Service层对数据库的 *** 作都是通过调用DAO层相应的XxxDao接口中的方法来实现。以AdminDao为例说明XxxDao接口是如何定义的:
AdminDaojava
public interface AdminDao {
/ 登陆验证,验证指定管理理ID和密码的记录是否存在 /
public Admin getAdminByIdAndPswd(String adminId, String adminPswd);
/此接口的中其他方法省略/
//其他方法声明的代码省略
}
说明:
XxxDao接口总是被相应的XxxDaoJdbcImpl类实现,通过相应方法的重写达到具体的数据 *** 作。
XxxDao接口实现类XxxDaoJdbcImpl的设计
XxxDaoJdbcImpl是XxxDao接口的实现类,该实现类中通过对接口方法的重写,来达到对特定数据表的增删改查等 *** 作。以AdminDaoJdbcImpl为例来说明是如何进行对数据库表的 *** 作,具体 *** 作说明见代码注释:
AdminDaoJdbcImpljava
public class AdminDaoJdbcImpl implements AdminDao {
/查询指定用户ID和密码的记录是否存在。若存在返回保存此记录的对象/
public Admin getAdminByIdAndPswd(String adminId, String adminPswd) {
/调用utils包中的公共数据库连接类DatabaseConn的静态方法getConnection() 取得指定数据库的连接。/
Connection conn = DatabaseConngetConnection();
try {
/创建(MySql)数据库查询语句/
String sql = "select from t_admin where ADMIN_ID= and ADMIN_PSWD= and STATE='1'";
/ 表示预编译的 SQL 语句的对象。SQL 语句被预编译并存储在 PreparedStatement 对象中,然后可以使用此对象多次高效地执行该语 句。/
PreparedStatement prep = connprepareStatement(sql);
/数字1代表第一个问号,表示用实参adminId给sql中的第一个问号赋值。 下一句类同。在这里必须注意实参的类型和数据库中数据类型的匹配。在 这里实参String类型对应于数据库中的varchar()。/
prepsetString(1, adminId);
prepsetString(2, adminPswd);
/在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。不会返回 null。ResultSet 本身是一个interface 。 /
ResultSet rs = prepexecuteQuery();
/如果结果集中有值,表示用户输入的管理理ID和密码是有效的,这样的 记录存在。/
if (rsnext()) {
// 先把信息取出来,并实例化一个Admin对象。
Admin admin = new Admin();
adminsetAdminId(adminId);
adminsetAdminPswd(adminPswd);
adminsetAdminName(rsgetString("ADMIN_NAME"));
adminsetLastLoginTime(rsgetTimestamp("LASTLOGIN_TIME"));
adminsetLastLoginMes(rsgetString("LASTLOGIN_MES"));
adminsetAdminDesc(rsgetString("ADMIN_DESC"));
/关闭ResultSet/
rsclose();
/关闭PreparedStatement /
prepclose();
// 修改登陆时间,t_admin表中存储着用户最近一次登陆的时间
String updateLoginTime = "update t_admin set LASTLOGIN_TIME= where ADMIN_ID= ";
PreparedStatement updatePrep = conprepareStatement(updateLoginTime);
updatePrepsetTimestamp(1, new Timestamp(new javautilDate()
getTime()));
updatePrepsetString(2, adminId);
updatePrepexecuteUpdate();
updatePrepclose();
// 返回
return admin;
} else {
/如果结果集中没有值,表示用户输入的ID密码不正确。
关闭ResultSet,关闭PreparedStatement ,程序返回null。/
rsclose();
prepclose();
return null;
}
} catch (Exception e) {
eprintStackTrace();
} finally {
/在程序执行return返回前,finally语句会被执行,在这里执行必须的一 步 *** 作-关闭数据库连接。即使有异常抛出,finally{}语句照样能执行, 保证数据库连接可以安全释放,不会造成数据库出现其它数据异常等问 题。/
DatabaseConncloseConnection(conn);
}
return null;
}
/AdminDao接口中的其他方法的实现/
//其他方法的实现代码省略
}
说明:
整个对数据库 *** 作的过程就是:取得数据库连接--〉创建Sql语句--〉创建PreparedStatement 语句--〉对语句中的‘?’进行赋值--〉执行executeX() *** 作,获得结果放入ResultSet中--〉根据需求从ResultSet中获得需要的结果-->关闭ResultSet-->关闭PreparedStatement --〉断开数据库连接--〉结果返回。
在Java中,获得ResultSet的总行数的方法有以下几种。
第一种:利用ResultSet的getRow方法来获得ResultSet的总行数
Statement stmt = concreateStatement(ResultSetTYPE_SCROLL_INSENSITIVE,ResultSetCONCUR_UPDATABLE);
ResultSet rset = stmtexecuteQuery("select from yourTableName");
rsetlast();
int rowCount = rsetgetRow(); //获得ResultSet的总行数
第二种:利用循环ResultSet的元素来获得ResultSet的总行数
ResultSet rset = stmtexecuteQuery("select from yourTableName");
int rowCount = 0;
while(rsetnext()) {
rowCount++;}rowCount就是ResultSet的总行数。
(1)首先使用last()方法,将数据库游标定位到记录集的最后一行。
(2)使用getRow()方法,返回记录集最后一行的行索引。该索引就等于记录集所包含记录的个数,也就是记录集的行数。getRow()方法是在JDBC API 20中才定义的,在JDBC API 10中没有这个方法。
以上就是关于哪位大侠能给这段Java语言加上注释,谢谢!再能对程序的功能分析、参数的选择依据给出分析就好了。全部的内容,包括:哪位大侠能给这段Java语言加上注释,谢谢!再能对程序的功能分析、参数的选择依据给出分析就好了。、在Java中,如何通过在数据库得到的结果集得到表的列数和行数、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)