A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2018-5-27 19:59  /  4391 人查看  /  56 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张述明
今天学习了Jdbc
jdbc 是SUN公司提供的一套接口规范.
今天主要对jdbc的基本操作,包括增删修查
重点要掌握的内容 Connection  Statement  ResultSet   preparedStatement
Jdbc的开发步骤
贾琏欲执事
贾    加载驱动
琏    获得连接
欲    创建SQL语句
执    执行sql语句
事    释放资源

加载驱动  Class.forName(“com.mysql.jdbc.Driver”);
获得连接  DriverManager.getConnection(“url”,”username””password”)
释放资源   分成两种 如果有结果集 就要多释放一个ResultSet
      增删改没有结果集 在执行语句可用executeUpdate(sql) 返回一个int类型值
只有查询有   查询在执行语句用executeQuary (sql)返回一个String类型
由于今天的许多代码重复,所以可抽取工具类中,然后在测试中调用方法
重复的代码主要是加载驱动,获得连接,和释放资源
将可变的元素抽取到prpperties文件中 如url,username,password,DriverclassName;
preparedStatement 是为了解决sql的注入漏洞 将sql中的操作对象用?代替,然后调用set方法来赋值,解决了sql的注入漏洞的问题.
回复 使用道具 举报
陈世彪:
今天学习了JDBS
JDBS是java和数据库进行连接的桥梁
JDBS的作用是可以为多种数据库提供统一访问,是一种标准,节约开发成本
SQL注入漏洞是通过已知的用户名直接进入到系统当中去,不用输入密码
解决方法:prepareStatement,这个对象将SQL预先进行编译,使用?作为占位符。再次传入变量,这个时候就不会再识别这些关键字。
使用JDBC进行编译时分为:
打开驱动
Class.for("com.mysql.jdbc.Driver")
获取连接对象
DriverManager.getConnection("jdbc:mysql://localhost:3306/classsql","root", "root");
获取执行语句的对象
conn.createStatement()
执行语句并处理数据
statement.executeQuery(sql);
释放数据操作相关对象
.close
结果集为ResultSet rs。使用while(rs.next())遍历是否有下一个数据
使用prepareStatement 可以使用setString()来设置数据,第一个是指第几个?  第二个是要设置的值
?也是来表示占位符
回复 使用道具 举报
李思贤:今天学习了JDBC(java database connectivity),它是连接java与数据库的一座桥梁.

注意:使用JDBC 必须先导入jar包.
     JDBC基本使用步骤:贾琏欲执释{
1.加载驱动 Class.forName("com.mysql.jdbc.Driver");
2获得连接 conn=DriverManager.getConnection("...","root",""123456");
3.获得执行SQL语句对象 statement=conn.createStatement();
4.执行SQL语句   rs=statement.executeQuery("SQL语句");
5.释放资源
}
CRUD的操作,即增删改查的使用,这些的使用中查和增删改查基本执行的方法相同,不同的是查询使用executeQuery(),增删改使用executeUpdate().

       由于操作中的内容重复的太多,然后可以将其抽取出来进行封装成一个JDBCUtil工具类来进行使用.
将配置信息提取到配置文件.properties然后在util工具类中进行使用,最后在使用中进行调用就可以
(工具类中定义释放资源的方法需要有两个,因为增删改和查所释放的资源参数不同)        
回复 使用道具 举报
康元中
1 JDBC : 是一个接口作用是 java程序访问数据库的一个桥梁. 大大降低程序员学习负担
(因为数据库有上百种如mysql 和Oracle 等如果要开发一个系统要是用某个数据库就得学习该数据库的
各种驱动 所以sun公司提供了一套规范,每个数据库的生产商提供这套规范的实现 )
2 SQL注入漏洞是 : 使用statement时为了不使得数据写死,使用字符串拼接的方式书写sql语句,
但是传入的字符串中有带有单引号的字符漏洞 就改变了sql拼接语句中的含义,使得出现漏洞
        通过prepareStatement预编译可避免sql注入漏洞
解决sql注入漏洞方法是 使用PreparedStatement 就可以吧解决,因为该对象方法中已经
对输出的特殊符号进行处理 .通过?占位符固定了sql语句的格式.
3JDBC的编译对像进行CRUD操作
步骤: "贾琏欲执事""的记忆步骤
加载驱动
获取连接对象
编写sql语句
获取sql执行对象
释放资源
回复 使用道具 举报
叶凌青
今天主要学习了JDBC
什么是jdbc,自我理解就是一组接口,一些规范
导入驱动jar包
开发步骤:
1注册驱动
Class.forName("com.mysql.jdbc.Driver");
类加载到内存,该类的静态代码将自动执行。
2.获得连接

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”,”root”,”root”);
3.获得预处理对象
Statement stmt = con.createStatement();
常用方法:
int executeUpdate(String sql); --执行insert update delete语句.
ResultSet executeQuery(String sql); --执行select语句.
boolean execute(String sql); --执行select返回true 执行其他的语句返回false.
4.处理结果集,执行select的时候需要(执行insert、update、delete无需处理)
ResultSet rs = stat.executeQuery(sql);
5.释放资源
rs.close();
stmt.close();
con.close();
从后往前,逐个关闭
总结:开发步骤贾莲欲执事
回复 使用道具 举报
任佳锋
JDBC 数据库连接接口,是一种用于执行SQL语句的JavaAPI,统一规范了多种关系数据库的访问方式.
使用JDBC前需要先将jar包导入,通过才行
JDBC的一般开发步骤为:
(贾琏欲执事)
贾1.加载驱动
Class.forName("com.mysql.jdbc.Driver")
琏2.获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql:///数据库名", 数据库用户名, 数据库密码

);
欲3.编写sql语句
String sql = "写入需要的sql语句";
执4.执行sql语句
Statement(存在sql注入漏洞)
PreparedStatement(预编译避免sql注入漏洞的产生)
事5.释放资源
通常将ResultSet,Statement,Connection等对象要释放的资源代码写到finally中
if(rs !=null){
                                try {
                                        rs.close();
                                } catch (SQLException e) {
                                        e.printStackTrace();
                                }
                               
                                rs = null;
                        }
                       
                        if(statement !=null){
                                try {
                                        statement.close();
                                } catch (SQLException e) {
                                        e.printStackTrace();
                                }
                               
                                statement = null;
                        }
                       
                       
                        if(conn !=null){
                                try {
                                        conn.close();
                                } catch (SQLException e) {
                                        e.printStackTrace();
                                }
                               
                                conn = null;
                        }
JDBC工具类
由于开发过程中重复代码很多,因此可以抽取重复代码编写出工具类,减少代码量,提高代码的复用性.
测试工具类时使用test测试,写入test通过Alt+斜杠的快捷方式调用
回复 使用道具 举报
凌辉
今天学习了jdbc
jdbc是一种执行sql语句的javaAPI,
步骤是:
1加载驱动;
2 获得连接;
3 基本操作;
4 释放资源;
学习了sql漏洞,解决办法是需要采用PreparedStatement对象解决SQL注入漏洞。
这个对象将SQL预先进行编译,使用?作为占位符,
所代表内容是SQL所固定。再次传入变量(包含SQL的关键字)。
这个时候也不会识别这些关键字。
回复 使用道具 举报
柯建程
JDBC 是java与数据库的桥梁,可以再java中写sql,用java操作数据库
接口规范
驱动:两个设备(应用)之间通信的桥梁
1创建数据库
2创建项目,引入jar包

五行代码
加载驱动
class.forname(com.mysql.jdbc.driver)
获得连接
connection conn=drivermanager.getconnection();
语句对象
statement sta=conn.createstatemen();
(编写sql)String s="";
执行
查询  resultset rs=sta.executequery(s)
增删改  int i=sta.executeupdate(s)
释放
            try {
                                        statement.close();
                                } catch (SQLException e) {
                                        e.printStackTrace();
                                }

                                statement = null;
                        }

                        if (conn != null) {
                                try {
                                        conn.close();
                                } catch (SQLException e) {
                                        e.printStackTrace();
                                }
回复 使用道具 举报
施炎生
开发步骤(贾琏欲执事:
1注册驱动
  Class.forName("com.mysql.jdbc.Driver");       
2.获得连接
  Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”,”root”,”root”);
3.获得预处理对象       
  常用方法:
int executeUpdate(String sql); --执行insert update delete语句.
ResultSet executeQuery(String sql); --执行select语句.
boolean execute(String sql); --执行select返回true 执行其他的语句返回false.
4.处理结果集,执行select的时候需要(执行insert、update、delete无需处理)
  ResultSet rs = stat.executeQuery(sql);       
5.释放资源
  rs.close();
  stmt.close();
  con.close();
       
回复 使用道具 举报
林荣彬
    今天学习了JDBC,主要学习了JDBC的开发步骤和在JDBC中增删改查的操作,学习PreparedStatemet执行SQL.对SQL进行预处理。解决SQL注入漏洞。
需要导入驱动包
JDBC的开发步骤:可以用一句话概述"贾琏欲执事"
1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
2.获得连接
onn = DriverManager.getConnection("jdbc:mysql://localhost:3306/web_test3", "root", "abc");
3.获得执行SQL语句对象
Statement statement = conn.createStatement();
4.执行SQL
int num = pstmt.executeUpdate();
5.释放资源
conn.close();
回复 使用道具 举报
林恒山
jdbc是sun公司提供的java与数据库之间通信的接口.
mysql实现jdbc的5个步骤:贾琏欲执事.也就是1:加载驱

动;2创建连接3获得执行sql语句的对象;4执行SQL语句;5释

放资源.
jsbc的增删改查的步骤是
1.加载驱动Class.forName("com.mysql.jdbc.Driver");
2.创建连接conn = DriverManager.getConnection

("jdbc:mysql://localhost:3306/db1", "root",

"root");
3获得执行sql语句的对象:
首先写sql语句;
Statement state=conn.createStatement();使用这个

createStatement()会产生sql注入漏洞,要使用

PreparedStatement pstmt=conn.prepareStatement(sql)
4执行sql :调用executeUpdate()
5释放资源. 关闭Connection和PreparedStatement.
增删改的区别只是在写sql语句上有区别.而查会有一个

ResultSet结果集,执行sql语句的时候使用的是

executeQuery(),最后释放资源的时候ResultSet也要释放

掉.
增删改查的代码重复性太多,抽取到工具类中,可以把注册驱

动/创建连接/释放资源放到工具类中.
sql注入漏洞的解决方法:使用PreparedStatement

pstmt=conn.prepareStatement(sql).
回复 使用道具 举报
JDBC Java Database Connectivity
sun公司提供的一组接口规范
Java和数据库的桥梁:可以让我们在Java代码中写sql,使用JAVA代码操作MySQL数据库
没有JDBC的时候 要开发一套系统,Java程序员需要了解很多数据库驱动API

开发步骤:
贾琏欲执事

加载驱动
获得连接
获得sql语句的对象
执行sql语句
释放资源


connection:1.获取语句对象 2.管理事务
drivermanager:1.获取连接  2.注册/加载驱动
statement:1.执行sql 2.批行处理sql语句

工具类的抽取  减少不必要的重复

用PreparedStatement对象解决SQL注入漏洞。它将SQL进行预编译,使用?作为占位符。?所代表内容是SQL所固定。再次传入变量(包含SQL的关键字)。这个时候也不会识别这些关键字。

注意:导包要全部导java.sql下的包 不要导jdbc的包
回复 使用道具 举报
本帖最后由 COLDER 于 2018-10-18 19:14 编辑


Day10

今天的学习内容为JDBC入门,JDBC的开发步骤,JDBC的两种增删改查方式.
JDBC(Java Date Base Connectivity):Java数据库连接,它是一组接口,由Java编写而成,作用:为不同的关系型数据库
提供统一的访问,JDBC可以通过执行SQL语言来对数据库中的数据进行操作.

JDBC的开发步骤:加载驱动,获得连接,获得执行SQL的对象,编写SQL,执行SQL,释放资源(贾琏欲执事)
加载驱动:Class.forName("com.mysql.jdbc.Driver");
获得连接:conn = DriverManager.getConnection(url,username,password);
获得执行SQL对象:stmt = conn.createStatement();
编写SQL:String sql = "SQL语句";
执行SQL:stmt.excuteUpdate(sql)(对数据库中的数据记录进行增删改操作)
        stmt.excuteQuery(sql)(对数据库中的数据记录进行查询操作)
释放资源:conn.close();stmt.close();

JDBC的两种增删改查方式:Statement,preparedStatement
区别:使用statement方式对数据库中数据进行读取操作,缺乏安全性(案例:账号密码登录),Statement和preparedStatement
在开发步骤上也有区别,statement是先获得执行SQL语句的对象,再编写SQL,而preparedStatement是先编写SQL语句,再
预编译SQL,设置参数.

今天的重点主要是掌握使用预编译方式对数据库的数据进行增删改查.
回复 使用道具 举报
Do1 中级黑马 2018-5-30 19:04:12
54#
本帖最后由 Do1 于 2019-11-23 00:35 编辑


JDBC是java连接mysql数据库的aip工具,通过jdbc可以从mysql数据库中提取数据,使用时需要导入mysql包

原始的连接方式为:
1.Class.forName(Stirng)
从指定的com包加载驱动
2.Connection conn=DriverManager.getConnection(URL,USER,PASS);
创建连接,需要传入的参数为Mysql数据库的URL地址,这里的地址包含了你所要使用的指定数据库名称,以及用户名和密码
3.Statement stmt=conn.createStatement();
实例化mysql对象

stmt.executeQuery(String sql);
传入sql语句,如果是查询的话就用一个ResultSet集合来接收并且使用executeQuery方法
如果是增删改的话可以用int类型来接收,判断是否添加成功,int类型收到的是表中受影响的row数,使用executeUpdate;方法

SQL注入漏洞是因为实例化对象编译sql语句时传入的是一个字符串,这个字符串就代表sql中的语句,通过注入漏洞将判定语句中的and 给隔开了,如果加一个or进去的话 就可以随意输入密码,解决方法是使用比Statment更高级的Statment的子类PreparedStatement,它可以预编译sql,设置参数,安全性高
回复 使用道具 举报
白有旺
JDBC是JAVA连接数据库的途径 普通连接的话 每次访问都会创建一次连接  所以使用连接池
连接池 需要导包 有Druil  c3p0 dbutlis 等
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 加入黑马