赞
踩
import java.sql.*; public class JDBC { private static final String driver="com.mysql.cj.jdbc.Driver"; private static final String url="jdbc:mysql://localhost:3306/data?useUnicode=true&useSSL=false&serverTimezone=UTC&characterEncoding=utf-8"; private static final String username="root"; private static final String password="aass2580"; //获得连接对象的方法 public static Connection getConnection(){ try { //加载数据库驱动 Class.forName(driver); System.out.println("驱动加载成功"); //连接数据库获得连接对象 System.out.println("数据库连接成功"); return DriverManager.getConnection(url,username,password); } catch (SQLException | ClassNotFoundException throwables) { System.out.println("数据库连接失败"); throwables.printStackTrace(); } return null; } //释放资源的方法 public static void close(Connection conn, Statement statement, ResultSet result){ try { if (result != null) { result.close(); result=null; } if (statement != null) { statement.close(); statement=null; } if (conn != null) { conn.close(); conn=null; } }catch (SQLException e){ e.printStackTrace(); } } }
private static final String driver="com.mysql.cj.jdbc.Driver";
Class.forName(driver);
这一句为加载驱动,我们首先要下载jar包,然后调用jar中的驱动
private static final String url="jdbc:mysql://localhost:3306/data?useUnicode=true&useSSL=false&serverTimezone=UTC&characterEncoding=utf-8";
private static final String username="root";
private static final String password="aass2580";
DriverManager.getConnection(url,username,password);
username为用户名
passwoed为密码
url构造:jdbc(方式):(方式)mysql:(数据库)//localhost:3306(端口号)/data(要连接的数据库名)
用于标识数据库的位置
jdbc为连接方法, java开发的时候,数据库连接方式除了jdbc,,jndi,,还有JDBC-ODBC桥的方式、、JDBC+厂商Database Connection Server+DataBase的形式和纯JDBC+DATABASE的连接方式。
2)mysql为需要连接的数据库, 数据库的类型有许多,Oracle数据库, SQLServer数据库,DB2数据库
3)localhost:3306 IP地址+端口号,localhost为本地主机。也可以写127.0.0.1(回送地址)
4)data 为需要连接的数据库的名称
JDBC(Java Data Base Connectivity)(java 数据库连接),官方解释它是java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API,从根本上来说是一种规范,它提供的接口可以便携式访问底层数据库。
我们需要导入jar包,其他的开发者可以将自己编写的代码打包为jar包,我们只需要导入这个jar包作为依赖,即可直接使用别人的代码,就向我们直接使用jdk提供的类一样。
获得数据库的连接
管理和注册我们的数据库驱动
DriverManager.getConnection(url,name,password)静态方法,用于连接对应的数据库
加载成功之后会返回connect对象。
PreparedStatement是用来执行SQL查询语句的API之一
Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句
- Statement 用于通用查询,
- PreparedStatement 用于执行参数化查询,
- CallableStatement则是用于存储过程。
使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。
数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。
使用范围:当执行相似SQL(结构相同,具体值不同)语句的次数比较少
优点:语法简单
缺点:采用硬编码效率低,安全性较差。
原理:硬编码,每次执行时相似SQL都会进行编译
使用范围:当执行相似sql语句的次数比较多(例如用户登陆,对表频繁操作…)语句一样,只是具体的值不一样,被称为动态SQL
优点:语句只编译一次,减少编译次数。提高了安全性(阻止了SQL注入)
缺点: 执行非相似SQL语句时,速度较慢。
原理:相似SQL只编译一次,减少编译次数
1)调用Statement 对象的executeQuery(sql) 可以得到结果集.
2)调用preparedStatementStatement 对象的executeQuery() 可以得到结果集
ResultSet 返回的实际上就是一张数据表 . 有一个指针指向数据表的第一行的前面. 可以调用next()方法检测下一行是否有效,若有效该方法放回true,且指针下移。
当指针对位到一行时,可以通过调用getXxx(index)或getXxx(columnName)获取每一列的值. 例如:getInt(1),getString(“name”)
ResultSet 也需要关闭.
我们需要循环对表进行遍历
例如
while (result.next()){
int type=result.getInt("type");
}
private static final String SQL_USER_INSERT = "INSERT INTO stu_information VALUES(?,?,?,?)";
private static final String SQL_USER_DELETE = "DELETE FROM stu_information WHERE id=? AND name=?";
private static final String SQL_USER_SELECT = "SELECT * FROM stu_information WHERE id=? AND name=?";
private static final String SQL_USER_UPDATE = "UPDATE stu_information SET age=? , class=? WHERE id=? AND name=?";
- INSERT INTO stu_information VALUES(?,?,?,?) 向stu_information表中添加元素
- DELETE FROM stu_information WHERE id=? AND name=? 通过id和name进行查找并进行删除
- SELECT * FROM stu_information WHERE id=? AND name=? 通过id和name进行查找
- UPDATE stu_information SET age=? , class=? WHERE id=? AND name=? 通过id和name进行查找并对age和class进行修改。
public boolean insert(int id, String name, int age, String classes) { //连接数据库,创建连接对象conn PreparedStatement preparedStatement=null; ResultSet result=null; Connection conn= JDBC.getConnection(); try{ //创建预编译环境 preparedStatement=conn.prepareStatement(SQL_USER_INSERT); //设置sql语句中的参数 1是第一个问号,2是第二个问号 preparedStatement.setInt(1,id); preparedStatement.setString(2,name); preparedStatement.setInt(3,age); preparedStatement.setString(4,classes); //执行sql语句 int line=preparedStatement.executeUpdate(); if(line>0){ return true; } }catch (SQLException e){ e.printStackTrace(); }finally { JDBC.close(conn,preparedStatement,result); } return false; }
public boolean delete(int id, String name) { //连接数据库,创建连接对象conn PreparedStatement preparedStatement=null; ResultSet result=null; Connection conn= JDBC.getConnection(); try{ //创建预编译环境 preparedStatement=conn.prepareStatement(SQL_USER_DELETE); //设置sql语句中的参数 1是第一个问号,2是第二个问号 preparedStatement.setInt(1,id); preparedStatement.setString(2,name); //执行sql语句 int line=preparedStatement.executeUpdate(); if(line>0){ return true; } }catch (SQLException e){ e.printStackTrace(); }finally { JDBC.close(conn,preparedStatement,result); } return false; }
public boolean select(int id, String name) { //连接数据库,创建连接对象conn PreparedStatement preparedStatement=null; ResultSet result=null; Connection conn= JDBC.getConnection(); try{ //创建预编译环境 preparedStatement=conn.prepareStatement(SQL_USER_SELECT); //设置sql语句中的参数 1是第一个问号,2是第二个问号 preparedStatement.setInt(1,id); preparedStatement.setString(2,name); //执行sql语句 Query ,得到结果集对象result result=preparedStatement.executeQuery(); while (result.next()){ return true; } }catch (SQLException e){ e.printStackTrace(); }finally { JDBC.close(conn,preparedStatement,result); } return false; }
public boolean update(int id, String name, int age, String classes) { //连接数据库,创建连接对象conn PreparedStatement preparedStatement=null; ResultSet result=null; Connection conn=null; conn= JDBC.getConnection(); try{ preparedStatement=conn.prepareStatement(SQL_USER_UPDATE); //设置sql语句中的参数 1是第一个问号,2是第二个问号 preparedStatement.setInt(1,age); preparedStatement.setString(2,classes); preparedStatement.setInt(3,id); preparedStatement.setString(4,name); //执行sql语句 int line=preparedStatement.executeUpdate(); if(line>0){ return true; } }catch (SQLException e){ e.printStackTrace(); }finally { JDBC.close(conn,preparedStatement,result); } return false; }
1.查看整表 user为表名
SELECT * FROM user
2.根据条件进行查找 where后面为条件 返回的是整行
SELECT * FROM `user` WHERE uname='admin' AND upass='admin'
3.返回一行中一个属性的值 type为一个属性
SELECT type FROM user WHERE uname='admin' AND upass='admin'
4.向表中添加一个学生 VALUES后跟的是添加的内容
INSERT INTO user VALUES(id,"zs","zs",2)
5.从表中删除一个学生信息
DELETE FROM user WHERE uname='zs'
6.修改表中的属性 没有from直接表名 set后面为修改内容
UPDATE user SET upass='mc' WHERE uname='mc'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。