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

网站开发报价单 docseo软件工具箱

网站开发报价单 doc,seo软件工具箱,2345浏览器入口,好看的wordpress博客主题一、JDBC的概述: JDBC:是一种执行sql语句的Java APL,可以为多种关系类型数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC,Java人员只需要编写一次程序就可以访问不同的数据库。 JDBC APL&#xf…

一、JDBC的概述:

  1. JDBC:是一种执行sql语句的Java APL,可以为多种关系类型数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC,Java人员只需要编写一次程序就可以访问不同的数据库。

  2. JDBC APL:供程序员调用的接口与类,集成在Java.sql包中

    1. DriverManager类:管理不同的JDBC驱动

    2. Connection接口:与特定数据库连接

    3. Statement接口:执行sql

    4. PreparedStatement接口:执行sql

二、JDBC的搭建:(有总结例子)

  1. 注册JDBC驱动程序:

    初始化驱动程序,这人样就可以打开与数据库的通信信道

    Class.forName("com.mysql.cj.jdbc.Driver");

    或者

    DriverManager.registerDriver(new Driver());

  2. 建立与数据库的连接:

    这需要使用DriverManager.getConnection()方法创造一个Connection对象,他代表一个物理连接的数据库

    Connection connection=DriverManager.getConnection(url,user,password);
    • URL:

      jdbc:mysql://ip(127.0.0.1):端口(3306)/数据库名?serverTimezone=Asia/Sanghai

    • USER:用户名(root)

    • PASSWORD:密码

  3. 获得Stament执行sql语句
    Statement st =connection.createStatement(); 

    Statement中的方法:

    • 【int类型】 excuteUpdate(String sql) 用于执行ddl语句和dml(增删改)语句 返回操作的行数

      用于执行ddl语句返回0

      用于执行dml语句返回操作的行数

    • 【ResultSet类型】 excuteQuery(String sql)用于执行查询语句返回一个ResuSet集合

  4. 获得PrepareStatement执行sql语句

    在sql语句中参数位置使用占位符,使用setXX方法向sql中设置参数

    PrepareStatement ps = connection.prepareStatement(sql);

    PrepreStatement中的方法:

    • 【int类型】 executeUPdate(): 用于执行ddl语句和dml(增删改)语句,返回操作的行数

      用于执行ddl语句返回0

      用于执行dml语句返回操作行数

    • 【ResultSet类型】executeQuery():用于执行查询语句返回一个ResultSet集合

  5. 关闭与数据库的连接通道

    每次操作完成后关闭与数据库交互的通道

    1. connection.close();

    2. st.close();

    3. ps.close();

接下来就写一个例子来作为JDBC搭建的总结:

public class day1 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//2.驱动注册//方法一:都是为了创造一个对象//Class.forName("com.mysql.cj.jdbc.Driver");//放射方式加载驱动//方式二:DriverManager.registerDriver(new Driver());
​//3.建立与数据库的连接String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root";String password="root";//这是我的密码qwqConnection connection = DriverManager.getConnection(url,user,password);System.out.println(connection);
​//4.发送sqlStatement statement= connection.createStatement();statement.executeUpdate("insert into major(name)value('数学')");
​//或者利用PreparedStatement发送/*PreparedStatement preparedStatement = connection.prepareStatement("insert into major(name)value(?)");preparedStatement.setObject(1, "数学");preparedStatement.executeUpdate();*///5.关闭连接statement.close();connection.close();}
}

结果:

三、PreparedStatement和Statement的区别

  1. 代码的可读性和可维护性

    虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说.都比直接用Statement的代码高很多档次

  2. 安全性

    防止外来代码sql注入。PreparedStatement的预占位符只能插入一个值,而会过滤其他语句;但是Statement可以插入其他语句比如or 1=1之类的和原数据库不符的条件。

举例方便直观感受:

Statement:

Statement statement= connection.createStatement();statement.executeUpdate("insert into major(name)value('数学')");

PrearedStatement:

PreparedStatement preparedStatement = connection.prepareStatement("insert into major(name)value(?)");preparedStatement.setObject(1, "数学");preparedStatement.executeUpdate();

四、结果集处理:(查询学生的姓名,性别等举例)

PreparedStatement和Statement中的executeQuery()方法中会返回一个ResultSe对象,查询结果就封装在此对象中

  • 可以使用ResultSet中的next()方法获得下一行数据

  • 使用getXXX(String name)方法获得值

举例:

有如下表:

有如下类保存学生数据:

public class Student {int number;String name;String gender;float height;Date regTime;
​public void setNumber(int number) {this.number = number;}
​public void setName(String name) {this.name = name;}
​public void setGender(String gender) {this.gender = gender;}
​public void setHeight(float height) {this.height = height;}
​public void setRegTime(Date regTime) {this.regTime = regTime;}
​
}

查询一个学生:

public class day2demo2 {public static void main(String[] args) throws SQLException {//查询学号为1的学生Student student=findStudentByNumber(1);System.out.println(student);}
​public static Student findStudentByNumber (int number) throws SQLException {DriverManager.registerDriver(new Driver());String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root";String password="root";//建立钰数据库的连接Connection connection= DriverManager.getConnection(url, user, password);//执行查询PreparedStatement ps = connection.prepareStatement("select number,name,gender,height,reg_time from student where number=?");ps.setObject(1, number);//执行查询后,mysql将数据分装到一个ResultSet中ResultSet re=ps.executeQuery();//将result中的数据重新包装到自己的对象中,使用起来更加方便Student student =new Student();while(re.next()){student.setNumber(re.getInt("number"));student.setGender(re.getNString("gender"));student.setName(re.getString("name"));student.setHeight(re.getFloat("height"));student.setRegTime(re.getTimestamp("reg_time"));}return student;}
}
​

结果:(显示地址)想要显示数据还要重写toString方法

查询全部学生:用Student类型的集合包装每个学生

public class day2demo {
​
/*获取数据库中的信息
*/public static void main(String[] args) throws SQLException {ArrayList<Student> students=  findStudentByNumber();System.out.println(students);}
​public static ArrayList<Student> findStudentByNumber () throws SQLException {DriverManager.registerDriver(new Driver());String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root";String password="root";//建立钰数据库的连接Connection connection= DriverManager.getConnection(url, user, password);//执行查询PreparedStatement ps = connection.prepareStatement("select number,name,gender,height,reg_time from student");//执行查询后,mysql将数据分装到一个resultset中ResultSet re=ps.executeQuery();//用arraylist保存student数据ArrayList<Student> students = new ArrayList<>();while(re.next()){Student student =new Student();student.setNumber(re.getInt("number"));student.setGender(re.getNString("gender"));student.setName(re.getString("name"));student.setHeight(re.getFloat("height"));student.setRegTime(re.getTimestamp("reg_time"));students.add(student);}return students;}
}

结果:

http://www.zhongyajixie.com/news/59717.html

相关文章:

  • 查公司查企业用什么网站百度引流平台
  • 外贸企业网站管理系统深圳网络优化seo
  • 支付宝小程序天津百度关键词seo
  • 阿里云建设网站安全吗爱上链外链购买交易
  • 公司网站工商备案怎么做公众号开发网站公司
  • 如何破解网站后台密码商品推广
  • 网站活动页面设计合肥百度搜索排名优化
  • 株洲做网站客服电话企业管理培训课程报名
  • 分成型网站建设郑州百度推广外包
  • 吉林长春有做网站的吗东莞seo黑帽培训
  • 58同城 网站建设百度竞价排名商业模式
  • 网站备案 公安局百度推广400客服电话
  • 一级门户网站建设费用电商代运营收费标准
  • 庐江有做网站的吗seo商城
  • 太原网站建设报价各大网站收录查询
  • 大学做机器人比赛的网站论坛网站推广交换链接
  • 做网页的网站叫什么软件昆明网站seo服务
  • 怎么用vps的linux做网站天津seo培训
  • 开源企业cms建站系统营销型网站制作公司
  • 做网站可以找设计公司吗搜狗seo刷排名软件
  • 可以做策略回测的网站seo百度刷排名
  • 百度做网站免费快速seo软件
  • 儋州网站建设培训学校义乌最好的电商培训学校
  • 优美女人女性网站模版友情链接交易平台源码
  • 儿童摄影网站模板英文seo外链
  • 门户网站中综合性程度高的是四川省最新疫情情况
  • 做黑帽需不需要搭建网站semir是什么牌子衣服
  • wordpress登录主题seo排名优化app
  • 自己网站做seo今日头条新闻最新疫情
  • 做的网站 如何在局域网内访问宁波网站关键词排名推广