jdbc编程是什么
怎么样通过jdbc操作数据库?
一. JDBC编程(Java DataBase Connectivity):
1.含义
说白了就是通过java代码来操作数据库。
数据库编程需要数据库服务器提供api(application programming interface应用程序编程接口)(以一组类/函数形式)供程序员调用来完成一些功能。不同的数据库提供不同的api,这会提高学习成本。这时候JDBC的出现规范了一套api,程序员只需要了解这一套api就可以操作各种各样的数据库了。
2.怎么统一api的?
通过驱动程序(软件,数据库厂商提供的)使不同的数据库原生的api转换成符合JDBC要求的api。
二.怎样在程序中操作mysql数据库?
准备工作:
1.先在中央仓库下载驱动包:
2.再把驱动包引入项目里:
新建一个目录,把jar复制到当前项目目录中。
3.再把这个目录标记成“库”。
准备工作完了,开始写代码:
4.
(1) 创建DataSource(数据库服务器所在位置)。
// 选择向下转型而不选择下面这样写的原因:
为了不让MysqlDataSource这个类名不扩散到其他地方,后续如果要修改为其他数据库,代码改动较小。
// Url(其实是网址):表示网络上的资源位置。mysql是客户端服务器结构的程序,通过网络交互。明确了服务器在网络上的位置才能对服务器进行访问。
// jdbc:mysql://127.0.0.1:3306/java411?characterEncoding=utf8&useSSL=false:
jdbc:mysql:表示对mysql这个数据库进行操作
127.0.0.1:ip地址,表示主机所在位置。只不过127.0.0.1是个特殊的ip地址,叫“环回ip”。每个机器都有环回ip(即127.0.0.1),只要把消息发到这个ip上就相当于自己给自己发消息,因为jdbc程序和mysql服务器在同一台主机上,所以使用环回ip即可。
3306:mysql服务器默认的端口号。(相当于日常生活中收件人的电话)
java411:表示访问mysql服务器上的哪个database。
useSSL=false:和mysql服务器通信过程中是否需要加密。
?characterEncoding=utf8&useSSL=false:用“ ?”和 “ & ”表示访问资源时需要的参数。
root:mysql管理员的名称,为mysql默认的用户名。
1234:mysql的密码。
(2)建立和数据库服务器之间的连接
(3)构造sql
//不直接发送给MySQL,而是通过preparedStatement来发送sql:
因为sql可能会存在一些语法错误,如果mysql需要对多个客户端的sql进行解析校验,开销会很大。而通过preparedStatement先解析检查sql是否有误,检查完毕后会得到结构化数据,直接把结构化数据发给数据库服务器,服务器就省下了这份解析的工作。
(4)把sql发给服务器
//excuteUpdate:针对insert update dalete(写)
//excuteQuery :针对select(读)
(5)释放资源
//程序通过代码与服务器通信需要消耗一定的硬件/软件资源,在程序结束时就需要告知服务器释放这些资源/客户端也需要释放这些资源。
另外:
能否让用户输入学号姓名?
这样不好,首先这种写法不够美观,而且可能会导致sql注入攻击,例如:name输入‘);drop database xxx; 。
所以preparedStatement提供了另一种方式:
?表示占位符
查询的写法: