JDBC
快速入门
步骤:
1.导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
1).复制 mysql-connector-java-5.1.37-bin.jar 到项目的libs目录下;
2).右键---> Add As Library
2.注册驱动
Class.forName("com.mysql.jdbc.Driver"); 案例是mysql 注册 jdk5之后的可以不用注册 自动完成注册
3.获取数据库连接对象 Connection
Connection conn= DriverManager.getConnection("jdbc:mysql://183.236.187.199:3306/cs2","root","root");
4.定义sql
String sql="select * from xuesheng";
5.获取执行sql语句的对象 Statement
Statement statement=conn.createStatement();
6.执行sql,接受返回结果
ResultSet rs=statement.executeQuery(sql);
7.处理结果
while (rs.next()){ //遍历并显示
System.out.print(rs.getInt("xid")); //显示打印
System.out.print(rs.getString("xname"));
System.out.print(rs.getString("xxingbei"));
System.out.println(rs.getString("xnianl"));
}
8.释放资源
rs.close();
statement.close();
conn.close();
详解各个对象:
DriverManager:驱动管理对象
1.注册驱动
2.获取数据库连接
方法: static Connection getConnection(String url,String 用户名,String 密码)//
参数 :url :指定路径语法 "jdbc:mysql://ip地址(域名):端口 / 数据库名称” 如果是本机可以简写: "jdbc:mysql:/// 数据库名称”
用户名:数据库的用户名 密码:数据库的密码
Connection :数据库连接对象
1.获取执行sql的对象
方法: Statement CreateStatement();
方法: PreparedStatement PrepareStatement(String sql);
2.事务管理
开启事务 setAutoCommit(boolean autoCommit):调用该方法设置参数为false 即开启事务
* 在执行sql之前开启事务
提交事务 commit()
* 在所有sql都执行完成提交事务
回滚事务 rollback()
* 在 try ····catch····中的 catch里回滚事务
Statement:执行sql执行的对象
1.执行sql
boolean execute(String sql): 可以执行任意的sql 了解即可不常用
int executeUpdate (String sql):执行DML语句(数据增删改)DDL(库的创建删除)语句; 返回值表示影响的行数 可以通过影响的行数判断是否成功 大于0表示成功;
ResultSet executeQuery(String sql);执行DQL语句(查询)
ResultSet:结果集对象
next():游标向下移动一行
getXX(): 获取数据
XX表示数据类型 获取什么数据就要写什么数据类型 如:int getInt(),String getString();
参数:int 代表列编号 ,从1开始 如:getInt(1); String :代表列名 如:getSting(“xingming”);
注意:使用步骤:
1.游标向下移动一行 2、判断是否有数据 3.获取数据
PreparedStatement :执行sql的对象
详见最末页;
《JAVA通过JDBC 操作数据库(增删改)》
创建Mysql表中的数据
1.连接远端数据库 183.236.187.199 端口3306 cs2数据库 2.通过createStatement() 方法在 xuesheng 表中创建 一个学生【14,'跛脚金','男','2000-01-09',1】

修改Mysql表中的数据
流程同上面案例,增加个判断 如果返回值>0 输出成功 否则输出 失败

删除Mysql表中的数据
流程同上面案例, 修改SQL语句即可

查看Mysql表中的数据
1.连接数据库 2..通过.executeQuery( ) 方法 ,获取输入SQL查询语句 并返回结果集对象 3.遍历结果

案例1:通过JAVA程序输入用户名密码到 ---183.236.187.199 数据库服务器查询 user 用户名密码 --是否正确;
数据库数据:

java程序方法类:

java主程序:

PreparedStatement:执行SQL的对象 ---------------------------------------------------------------------------------------- * 常用 *
1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字与字符串的拼接,会造成安全问题;
如:输入用户名随便输入, 密码:a’ or 'a'='a 拼接后例:select * from user where name='fdsfadgfdsagfd' and password='a' or 'a'='a';
2.解决sql注入问题:使用PreparedStatement 对象来解决;
3.使用预编译的sql,参数使用 ?作为占位符
4.步骤流程:
1).注册驱动
2).获取数据库连接对象 Connection;
3).定义SQL 使用占位符;
*注意:sql的参数使用? 作为占位符。例:select * from user where name=? and password=?;
4).获取执行sql语句的对象 PreparedStatement Connection.prepareStatement(string sql); 要先传入sql语句有占位符的如上
5).给? 赋值: 给获取到的PreparedStatement 对象通过下面方法赋值。
*方法:setXXX(参数1,参数2); XX表示数据类型 参数1是 第一个? 参数2 是第2个问号以此类推
6).执行sql,接受返回的结果;
使用executeQuery() 方法提交给数据库查询,不带参数。
7).处理结果;
8).释放资源;
案例:主要实验内容PreparedStatement:
主程序:

方法 类;

输入正确情况 使用注入语句 密码错误

案例二: 主要实验内容 事务回滚 +PreparedStatement
程序:

数据库执行前 数据库执行后


浙公网安备 33010602011771号