用php做网站和go做网站,怎么识别网站是用什么语言做的,ppt在线预览wordpress,东莞大岭山目录
1.数据库编程的必备条件
2.Java的数据库编程JDBC 3.JDBC的工作原理
4.第三方库connector的下载和导包
5.JDBC的使用
使用步骤 #xff08;1#xff09;创建数据源对象DataSource
#xff08;2#xff09;给对象设置必要的属性
#xff08;3#xff09;和数据…
目录
1.数据库编程的必备条件
2.Java的数据库编程JDBC 3.JDBC的工作原理
4.第三方库connector的下载和导包
5.JDBC的使用
使用步骤 1创建数据源对象DataSource
2给对象设置必要的属性
3和数据库建立网络连接
4程序构造sql语句
5将sql语句传到服务器上执行
6释放上述资源
优化
整体代码 具体操作
6.JDBC常用接口和类
1JDBC API
2数据库连接Connection
2Statement对象 1.数据库编程的必备条件 编程语言如JavaC、C、Python等数据库如OracleMySQLSQL Server等数据库驱动包不同的数据库对应不同的编程语言提供了不同的数据库驱动包如MySQL提 供了Java的驱动包mysql-connector-java需要基于Java操作MySQL即需要该驱动包。同样的 要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。 2.Java的数据库编程JDBC JDBC即Java Database Connectivityjava数据库连接。是一种用于执行SQL语句的Java API它是 Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成它为Java 开发人员操作数据库提供了一个标准的API可以为多种关系数据库提供统一访问。 3.JDBC的工作原理
JDBC 为多种关系数据库提供了统一访问方式作为特定厂商数据库访问API的一种高级抽象它主要包 含一些通用的接口类。
JDBC访问数据库层次结构:
JDBC优势
Java语言访问数据库操作完全面向抽象接口编程开发数据库应用不用限定在特定数据库厂商的API程序的可移植性大大增强
4.第三方库connector的下载和导包 下载 这里提供一个最为简单的下载方法去maven中央仓库下载 链接 看自己的数据库的版本情况来下载点击Central下载即可对应的版本经典版最高是8.0更高的版本在最新版中 注MySQL的版本必须和connector的版本一致 导包 下载好 .jar 包把 .jar导入到自己的Java项目中 先在项目中创建一个目录.名字随便起,但是不要带有中文/特殊字符 把下载好的jar包,拷贝到lib目录中 右键刚才的lib目录, 点击add as library(告诉idea,这个lib目录是一个库目录) 5.JDBC的使用
使用步骤 1创建数据源对象DataSource 描述当前数据从哪来即数据库服务器所在的位置 通过原码我们可以看到DataSourse是被interface修饰的类不能用来直接实例化该对象因此我们只能实例化它的子类MysqlDataSource DataSource dataSource new MysqlDataSource(); DataSourseJava标准库JDBC自带的接口 MysqlDataSource刚刚导入的 .jar包 2给对象设置必要的属性 1)数据库服务器在哪里 2)访问服务器的账户是啥 3)访问服务器的密码是啥 //第一种写法
DataSource dataSource new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java?characterEncodingutf8useSSLfalse);
((MysqlDataSource) dataSource).setUser(root);
((MysqlDataSource) dataSource).setPassword(jqka);//第二种写法
MysqlDataSource mysqlDataSource new MysqlDataSource();
mysqlDataSource.setUrl(jdbc:mysql://127.0.0.1:3306/java112?characterEncodingutf8useSSLfalse);
mysqlDataSource.setUser(root);
mysqlDataSource.setPassword(jqka); 第一种写法的好处耦合程度更低 按照第一种写法,后续代码中如果再使用DataSource这个东西,是看不到MysqlDataSource这个信息的. 就使得后续的其他部分代码和“mysql这个概念解耦合了.后面的代码,和啥数据库没关系.如果要更换数据库,此时代码修改的成本就比较低 说明: Url jdbc:mysql: 描述了url的用途是用来给jdbc的mysql使用的
127.0.0.1: IP地址.描述了mysql服务器所在的主机的位置.
3306:端口号,用来区分一个主机上的应用程序的.
java112?characterEncodingutf8数据库名和字符集
useSSLfalse额外的参数起到了针对这次的数据库连接,解释说明这里表示关闭加密User root就是DBA权限最高账户管理员 Password jqka即自己数据库的密码 3和数据库建立网络连接 受查异常所以要向上进行抛异常 //2.和数据库服务器建立连接
Connection connection dataSource.getConnection();
System.out.println(connection); 此处的Connection 对象,就是表示了一个数据库连接,注意 这里必须选择sql的Connection 4程序构造sql语句 我们之前在cmd敲的sql是把 sql发送到mysql服务器mysql服务器负责解板,解析完成之后,执行.解析检查sql是否有语法错误具体要完成什么工作..... 解析工作需要消耗系统资源 由于mysql服务器,同一时刻可能要同时给多个客户端提供服务.解析工作积少成多也就会比较消耗资源 因此往往就可以把解析工作放到客户端来完成(自己写的代码) 客户端发送sql之前,先解析好先把一些能做的工作做好,这样服务器就可以降低一些工作量,减轻压力了 构造方法有很多种这里我们使用最主流的PreparedStatement预编译语句来完成这一操作 //4.程序构造MySQL语句
String sql create table test(id int,name varchar(20));
PreparedStatement statement connection.prepareStatement(sql); 5将sql语句传到服务器上执行 statement.executeUpdate();的返回值表示影响了几行数据 6释放上述资源 //5.释放上述资源
statement.close();
connection.close(); 说明释放资源的顺序,要和创建资源的顺序相反 建立连接/创建语句的时候,就需要消耗一定的内存/硬盘/网络筹资源....这些资源,都是跟随这个连接来走的. 如果连接不再使用了就需要把这些资源释放掉. 优化 此时我们还可以使用Scanner自定义让用户输入数据 Scanner scanner new Scanner(System.in);
System.out.println(请输入id: );
int id scanner.nextInt();
System.out.println(请输入name: );
String name scanner.next(); 在我们输入的时候可以使用占位符来进行操作避免出现多个引号的情况 String sql insert into student values(?,?);
PreparedStatement statement connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name); 注意 替换时下标是从1开始的 整体代码
package jdbc;import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class TestJDBC1 {public static void main(String[] args) throws SQLException {Scanner scanner new Scanner(System.in);System.out.println(请输入id: );int id scanner.nextInt();System.out.println(请输入name: );String name scanner.next();//1.创建数据源对象//向下转型DataSourceDataSource dataSource new MysqlDataSource();((MysqlDataSource) dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java?characterEncodingutf8useSSLfalse);((MysqlDataSource) dataSource).setUser(root);((MysqlDataSource) dataSource).setPassword(jqka);/*MysqlDataSource mysqlDataSource new MysqlDataSource();mysqlDataSource.setUrl(jdbc:mysql://127.0.0.1:3306/java112?characterEncodingutf8useSSLfalse);mysqlDataSource.setUser(root);mysqlDataSource.setPassword(jqka);*///2.和数据库服务器建立连接Connection connection dataSource.getConnection();//3.程序构造MySQL语句//String sql insert into student values(2,李四);String sql insert into student values(?,?);PreparedStatement statement connection.prepareStatement(sql);statement.setInt(1,id);statement.setString(2,name);//4.把sql语句传到服务器上执行int n statement.executeUpdate();System.out.println(n);//5.释放上述资源statement.close();connection.close();}
}具体操作
插入删除修改操作都是相似的改语句内容即可
//插入数据
String sql insert into student values(2,李四);
//删除id 1的数据
String sql delete from student where id 1;
//修改id 2的name为张三
String sql update student set name 张三 where id 2;//传送sql语句到服务器上
int n statement.executeUpdate();
select操作有所差异
statement对象使用的方法为executeQuery()使用该方法后返回的结果是一个结果集需要用ResultSet来接收ResultSet需要单独进行释放
//查表
String sql select * from student;
PreparedStatement statement connection.prepareStatement(sql);//接受的是一个结果集合
ResultSet resultSet statement.executeQuery();//遍历
while (resultSet.next()) {System.out.println(resultSet.getInt(id));System.out.println(resultSet.getString(name));
}resultSet.close();
说明通过ResultSet表示查询结果的临时表~~ 代码中使用的时候可以当做集合类来使用可以进行遍历 总结两种执行SQL的方法 executeQuery() 方法执行后返回单个结果集的通常用于select语句 executeUpdate()方法返回值是一个整数指示受影响的行数通常用于update、insert、delete 语句 6.JDBC常用接口和类
1JDBC API
在Java JDBC编程中对数据库的操作均使用JDK自带的API统一处理通常与特定数据库的驱动类是完全 解耦的。所以掌握Java JDBC API 位于 java.sql 包下 即可掌握Java数据库编程。
2数据库连接Connection Connection接口实现类由数据库提供获取Connection对象通常有两种方式 通过DriverManager驱动管理类的静态方法获取 // 加载JDBC驱动程序
Class.forName(com.mysql.jdbc.Driver);
// 创建数据库连接
Connection connection DriverManager.getConnection(url); 一种是通过DataSource数据源对象获取。实际应用中会使用DataSource对象。 DataSource ds new MysqlDataSource();
((MysqlDataSource) ds).setUrl(jdbc:mysql://localhost:3306/test);
((MysqlDataSource) ds).setUser(root);
((MysqlDataSource) ds).setPassword(jqka);
Connection connection ds.getConnection(); 区别 1. DriverManager类来获取的Connection连接是无法重复利用的每次使用完以后释放资源 时通过connection.close()都是关闭物理连接。 2. DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接这些连接 是可以复用的每次使用完数据库连接释放资源调用connection.close()都是将 Conncetion连接对象回收。 2Statement对象
Statement对象主要是将SQL语句发送到数据库中。JDBC API中主要提供了三种Statement对象。 实际开发中最常用的是PreparedStatement对象