JDBC从入门到熟练(二)
来源:互联网 发布:宣城太守知不知翻译 编辑:程序博客网 时间:2024/06/10 07:26
import java.sql.*;import java.util.List;//Dao工厂类public class DaoFactory {private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";private static String url="jdbc:sqlserver://localhost:1433;DatabaseName=News";private static String sql="insert userInfo values('admin','admin',getdate())";private static String user="sa";private static String pwd="sa";//1.公共方法是获得数据库链接对象public static Connection getConnection(){Connection con=null;try {Class.forName(driver);//加,连con=DriverManager.getConnection(url,user,pwd);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return con;//非void都需要return}//2.关闭所有方法;有3个参数!,省代码了!!!public static void closeAll(ResultSet rs,Statement stmt,Connection con){try {if(rs!=null){rs.close();}if(stmt!=null){stmt.close();}if(con!=null){con.close();}} catch (SQLException e) {e.printStackTrace();}}//3.setParams,用来设置预编译语句对象的?占位符的值;public void setParams(PreparedStatement pstmt,Object[]params){if(params==null){return; }//return:直接返回,啥也不做;try {for(int i=0;i<params.length;i++){pstmt.setObject(i+1,params[i]);}} catch (SQLException e) {//有异常,加上去e.printStackTrace();}}//4.做公共的更新方法,可以更新所有的基本sql语句;public int executeUpdate(String sql,Object[]params){//1.声明对象;是将来工作当中省内存;Connection con=null;PreparedStatement pstmt=null;int count=0; //增删改受影响的行数;try {con=this.getConnection();//调用本类的方法;pstmt=con.prepareStatement(sql);//建对象:预编译对象,?setParams(pstmt,params);//调用设置?的方法,已经写过了!!!count=pstmt.executeUpdate();//3.执行;} catch (SQLException e) {e.printStackTrace();}finally{this.closeAll(null, pstmt, con);}return count;}//5.执行查询方法;public static List executeQuery(String sql, Object[] params) {Connection con = null;PreparedStatement pstmt = null;ResultSet rs = null;int colCount = 0;ArrayList tableList=new ArrayList();//表集合try {con = getConnection();pstmt = con.prepareStatement(sql);setParams(pstmt, params);rs = pstmt.executeQuery();// 执行查询,结果给rsResultSetMetaData rd = rs.getMetaData();// 获得元数据colCount = rd.getColumnCount();while (rs.next()) {ArrayList rowList = new ArrayList();//行集合for (int i = 1; i <= colCount; i++) {rowList.add(rs.getString(i));}tableList.add(rowList);}} catch (SQLException e) {e.printStackTrace();}finally{closeAll(rs,pstmt,con);}return tableList;}}DAO接口
import java.util.List;//针对UserInfo的增删改查接口;public interface UserInfoDAO {public int insertUserInfo(UserInfo user); //saveXXXpublic int updateUserInfo(UserInfo user);public int deleteUserInfo(UserInfo user);public List<UserInfo>queryUserInfo();//查询学生方法}
//实现类
import java.util.List;public class UserInfoDAOImpl extends DaoFactory implements UserInfoDAO {@Overridepublic int deleteUserInfo(UserInfo user) {return 0;}/* (non-Javadoc) * @see 插入方法,重写 */@Overridepublic int insertUserInfo(UserInfo user) {int result=0;String sql="";Object[]params=;result=super.executeUpdate(sql, params);return result;}@Overridepublic List<UserInfo> queryUserInfo() {String sql="select * from userinfo";List list=DaoFactory.executeQuery(sql, null);return list;}@Overridepublic int updateUserInfo(UserInfo user) {return 0;}}
测试类
package nan;import java.util.List;public class Test {public static void main(String[] args) {UserInfoDAO udd=new UserInfoDAOImpl();List tableList=udd.queryUserInfo();for(int i=0;i<tableList.size();i++){List rowList=(List)tableList.get(i);//cann't from Object to List,必须强转for(int j=0;j<rowList.size();j++){System.out.print(rowList.get(j)+"\t");}System.out.println();//每行完毕后换行}}}
0 0
- JDBC从入门到熟练(二)
- JDBC从入门到熟练(一)
- SVN从入门到熟练
- RXJava从入门到熟练
- Oracle代码大全.从入门到熟练
- Redis从入门到熟练掌控
- 【Spring Boot】 从入门到熟练,从简介到集成
- Solr入门到熟练
- 存储过程从入门到熟练(c#篇)
- 存储过程从入门到熟练(c#篇)
- 存储过程从入门到熟练(c#篇)
- 存储过程从入门到熟练(c#篇)
- 存储过程从入门到熟练(c#篇)
- 存储过程从入门到熟练(c#篇)
- 存储过程从入门到熟练(c#篇)
- ps学习简介,从入门到熟练,视频、素材齐全
- SQL,从熟练到掌握
- spring框架入门到熟练
- js面向对象
- linux下redis安装
- 用注册表创建无法删除的IE快捷方式
- Git中add命令介绍
- 2016/10/20 1003. Maze
- JDBC从入门到熟练(二)
- 第八周 【项目三 根据要求编写函数】
- UVa 562 - Dividing coins (0-1 变形)
- 冒泡排序C语言实现
- 关于URL编码
- HDU~4704~SUM
- [codeforces704B]ant man 解题报告
- Javascrpt密码强度校验函数
- 本地缓存