当前位置: 首页 > news >正文

新网站如何做排名一键优化表格

新网站如何做排名,一键优化表格,三亚按下了暂停键,哪个网站的理财频道做的比较好SQL通用方法 一、常规方法增删改查二、具体优化步骤1.准备工作2.getcon()方法,获取数据库连接对象3.closeAll()方法,关闭所有资源4.通用的增删改方法5.通用的查询方法6.动态查询语句 总结 一、常规方法增删改查 在常规方法中,我们在Java中对…

SQL通用方法

  • 一、常规方法增删改查
  • 二、具体优化步骤
    • 1.准备工作
    • 2.getcon()方法,获取数据库连接对象
    • 3.closeAll()方法,关闭所有资源
    • 4.通用的增删改方法
    • 5.通用的查询方法
    • 6.动态查询语句
  • 总结


一、常规方法增删改查

在常规方法中,我们在Java中对数据库中的表做增删改查操作的时候会发现,代码的答题都大致相同,应该可以将代码优化成一个通用的方法,首先我们要知道增删改要使用到Connection和PreparedStatement两个对象,而查找需要再加一个ResultSet对象,从这里出发我们开始写出一个通用的增删改方法,一个查询方法

二、具体优化步骤

1.准备工作

我们在优化前,需要将一个重复使用的数据写进属性文件中,以便多次使用,提高代码重用率
在src下新建一个包,叫做config,在config包中新建一个文件,jdbc.properties,
在这里插入图片描述
写上常规方法中需要用到的几个数据

2.getcon()方法,获取数据库连接对象

getCon方法,获取数据库连接对象,代码如下

//获得数据库连接对象public Connection getcon() {Properties pro = null;FileReader fr = null;Connection con = null;try {pro = new Properties();			//类加载器//相对地址转换成绝对地址String str = DBHelper.class.getClassLoader().getResource("config/jdbc.properties").getPath();fr = new FileReader(str);		//读取属性文件中的数据pro.load(fr);					} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}try {Class.forName(pro.getProperty("mysql.classname"));String username = pro.getProperty("mysql.username");String password = pro.getProperty("mysql.password");String url = pro.getProperty("mysql.url");con = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return con;			//返回值为Connection类型,在通用方法中调用这个getcon方法,拿到数据库连接对象后继续操作}

3.closeAll()方法,关闭所有资源

代码如下

public void closeAll(Connection con, PreparedStatement ps, ResultSet rs){try {if (rs != null) {rs.close();}if (ps != null) {ps.close();}if (con != null) {con.close();}} catch (SQLException e) {e.printStackTrace();}}

有了这个方法,在我们执行完通用方法之后就不再需要写很多行代码去关闭资源了

4.通用的增删改方法

//通用的增删改方法public int update(String sql,Object...objects){int i = 0;Connection con = null;PreparedStatement ps = null;try {con = getCon();//调用getcon,获得数据库连接对象ps = con.prepareStatement(sql);//向传入的sql语句中的问号赋值for (int j = 0; j < objects.length; j++) {ps.setObject(j + 1, objects[j]);}i = ps.executeUpdate();//执行sql语句并获得结果} catch (SQLException e) {e.printStackTrace();}finally {closeAll(con,ps,null);}return i;//返回执行后的结果以供下一步差异化操作}

5.通用的查询方法

public ArrayList query(String sql,Class cla,Object...objs){ArrayList list = null;Connection con = null;PreparedStatement ps = null;ResultSet rs = null;try {con = getcon();ps = con.prepareStatement(sql);for (int i = 0; i < objs.length; i++) {ps.setObject(i + 1, objs[i]);//给sql语句中的问号赋值}rs = ps.executeQuery();//执行sql语句进行查找while (rs.next()) {//遍历查找到符合条件的对象Object o = cla.newInstance();//通过反射得到一个新的对象Field[] declaredFields = cla.getDeclaredFields();//利用反射获取对象成员的所有属性放到数组中for (Field f : declaredFields) {//利用强烈for循环遍历数组f.setAccessible(true);//暴力破解权限f.set(o, rs.getObject(f.getName()));//对新的对象的每一个属性赋值,赋的是查找到的对象的值}list.add(o);//将新的对象添加到集合中,开始对下一个符合条件的对象进行操作}} catch (IllegalAccessException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {closeAll(con,ps,rs);}return list;//等对所有符合条件的对象都操作完,把这个集合返回出去,等待下一步使用}

6.动态查询语句

我们要知道不同功能的操作的原因是sql语句不同,而查找的sql语句偏偏是一个不能修改的String类型的,我们很难附加一些缩小范围的查询条件,所以动态查询需要用到可变数组,以下代码是在数据层实现类中书写的
以DVD项目做例子,DVD有六个属性,分别是下面代码体现的这些,我们通过传参,传进来一个DVD对象,这个时候我们先写一个可变数组where后面 1 = 1是恒成立的意思,无论后面加不加,加什么都会执行,接下来我们对dvd的各个属性进行判断,如果不为空,那么就代表需要根据这条属性来判断,我们就在sql语句中加上该条件,接着我们在集合中添加这条属性。最后我们再调用通用的查询方法,进行一个动态查询,其实到这里还没结束,需要在控制层再写一次差异化,如果输入一个什么东西,或者下拉勾选需要查询的属性,比如下面第二段演示的代码:

public ArrayList<DVD1> selectDVDs(DVD1 dvd) {StringBuilder sql = new StringBuilder("select * from dvd where 1 = 1");ArrayList list = new ArrayList();if (dvd.getId() != null){sql.append("and id = ?");list.add(dvd.getId());}if (dvd.getName() != null){sql.append("and name = ?");list.add(dvd.getName());}if (dvd.getState() != null){sql.append("and state = ?");list.add(dvd.getState());}if (dvd.getLendDate() != null){sql.append("and lendDate = ?");list.add(dvd.getLendDate());}if (dvd.getMoney() != null){sql.append("and money = ?");list.add(dvd.getMoney());}if (dvd.getCount() != null){sql.append("and count = ?");list.add(dvd.getCount());}return db.query(sql.toString(),DVD1.class,list.toArray());}

public void see(){DVD dvd=new DVD();System.out.println("请输入查看DVD的编号:(输入N,不按照此条件查询)");String id = input.next();if (!"N".equals(id))dvd.setId(Integer.parseInt(id));System.out.println("请输入查看DVD的名称:(输入N,不按照此条件查询)");String name = input.next();if (!"N".equals(name))dvd.setName(name);System.out.println("请输入查看DVD的状态:(输入N,不按照此条件查询)");String state = input.next();if (!"N".equals(state))dvd.setState(state);System.out.println("请输入查看DVD的日租金:(输入N,不按照此条件查询)");String money = input.next();if (!"N".equals(money))dvd.setMoney(Double.parseDouble(money));System.out.println("请输入查看DVD的借出日期:(输入N,不按照此条件查询)");String date = input.next();if (!"N".equals(date))dvd.setLendDate(date);System.out.println("请输入查看DVD的出借次数:(输入N,不按照此条件查询)");String count = input.next();if (!"N".equals(count))dvd.setCount(Integer.parseInt(count));ArrayList<DVD> dvds = dvdService.findDVDs(dvd);System.out.println("序号\t\t名字\t\t状态\t\t日租金\t\t借出日期\t\t出借次数");for (DVD d : dvds) {System.out.println(d.toString());}}

这样我们就实现了对某一张表进行一个动态查询的操作


总结

以上就是sql语句的通用方法,真~通用,感觉对你有益的话点个收藏吧,防止用的时候找不到!!!

http://www.tj-hxxt.cn/news/67108.html

相关文章:

  • 公司企业发展建议搜索引擎优化实训心得
  • 2022年最火的网页游戏郑州seo代理商
  • 做网站需要的资质1个百度指数代表多少搜索
  • 阿里云服务器客服电话 人工优化seo厂家
  • 邢台网站建设优化潍坊今日头条新闻最新
  • 网站栏目页排名怎么做网站模板
  • 搭建网站 程序搜索引擎
  • 网站优化关键词真正免费的网站建站平台
  • 制作房地产网站页面深圳抖音seo
  • 有什么值得做的网站如何进行网站的宣传和推广
  • 有免费做门户网站吗广东疫情最新消息今天
  • wordpress 进销存搜索优化指的是什么
  • 开公司做网站深圳网络推广软件
  • 中国建设银行客服电话麒麟seo外推软件
  • 衡水网站制作与推广手机端seo
  • 布吉做网站的公司东莞网
  • 无锡专业制作网站百度知道怎么赚钱
  • 网站建设的id调用怎么操作百度指数分析官网
  • 哪家可以做网站全网网站快速排名推广软件
  • 阿里巴巴国际站下载卖家版最新网站推广方法
  • 发布做网站需求qq群短视频运营方案策划书
  • 郑州网站开发培训班百度做广告怎么做
  • 宁陵网站建设吉林百度seo公司
  • 免费建立教育网站网络营销教程
  • 技术支持 东莞网站建设 轴承网址导航下载到桌面
  • 两个公司的网站建设怎么接广告赚钱
  • 淄博建设银行网站建站软件可以不通过网络建设吗
  • 建立网站需要多少钱多少钱28湖南岚鸿东莞网站制作
  • 做餐饮类网站用哪个程序百度网站安全检测
  • 红色专题网站首页模板网络营销的主要传播渠道是