首页 > 编程语言 >JDBC的编程

JDBC的编程

时间:2024-09-13 09:52:34浏览次数:13  
标签:JDBC MysqlDataSource SQL 数据库 编程 statement sql

1.数据库编程的必备条件

  编程语言:C, C++. JAVA,  python等

  数据库:mysql, oracle, sql server等

  数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提
   供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的,
   要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。

2.java数据库编程:JDBC

  JDBC是执行SQL语句的专用java api  (用于连接java数据库的)

 JDBC :java标准库,提供的一套API(类+方法) 统一各种数据库提供的API

 这样图可以清楚的表示JDBC的作用了

3. jar包导入项目中

  (jar包可以在官网自行下载)

   第一步:新建一个项目(名字 lib 的目录,lib是library库的缩写,也可写其他名字)

 第二步:

  • 然后右键这个目录选择【添加为库…】

 点击add就会出来下面这个图片的内容 默认点ok就行

 

导入完成 

 

 

 4.编写代码连接数据库

1.创建dataSource  数据源 (描述了数据库服务器在哪里)

       使用对象获取方法

DataSource dataSource = new MysqlDataSource();

 

下面的方法 setUrl ,setUser, setPassword都是MysqlDataAource这个接口实现类里面的方法,由于向上转型后父类无法调用子类的独有的方法,所以我们还需要向下转型

通过强制类型转换就可以调用我们需要使用的方法了

这里有个问题是为什么不直接使用MysqlDataSource呢 (这样就可以不用上下转换了)

  这里要是使用这个代码会产生隐患

MysqlDataSource mysqlDataSource = new  MysqlDataSource();

因为我们在设计一些接口、类的时候始终要遵循【高内聚 · 低耦合】的思想,即类的内部各个方法之间要紧密关联,但类与类之间不要产生太大的依赖

        

因为在上面我们使用的是【MysqlDataSource 】,所以在程序的其他方法中,我们可能也需要使用到这个类去做一个接受,就是因为这种高内聚的原因,导致了【MysqlDataSource 】被大量地进行扩散,此危害性就在于后续我们的项目要更换数据库的就需要改动很多的代码,加大了工作量!!!

         

setUrl括号里面的内容了解即可 

setUser 用户名默认是root即可

 

setPassword 安装mysql数据库时设置的密码

2.DriverManager(驱动管理类)的静态方法获取 

区别:

DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源时,通过connection.close()都是关闭物理连接。
DataSource提供连接池的支持。连接池在初始化时将内置了【数据库连接池】,这些连接是可以复用的,每次使用完数据库连接,释放资源调用connection.close()都是将Conncetion连接对象回收

标签:JDBC,MysqlDataSource,SQL,数据库,编程,statement,sql
From: https://blog.csdn.net/2401_83177222/article/details/142175101

相关文章

  • 一文搞定高并发编程:CompletableFuture的supplyAsync与runAsync
    CompletableFuture是Java8中引入的一个类,用于简化异步编程和并发操作。它提供了一种方便的方式来处理异步任务的结果,以及将多个异步任务组合在一起执行。CompletableFuture支持链式操作,使得异步编程更加直观和灵活。在引入CompletableFuture之前,Java已经有了Future接口来......
  • 网络编程基础项目一:TCP实现FTP功能
    目录FTP核心原理项目功能介绍: 大致思路复习stat函数stat获取当前路径下文件的属性代码服务器客户端 总结FTP核心原理客户端连接服务器后,向服务器发送一个文件。文件名可以通过参数指定,服务器端接收客户端传来的文件(文件名随意),如果文件不存在自动创建文件,如果......
  • 网络编程(setsockopt、超时检测)
    【1】setsockopt:设置套接字属性set:设置sock:套接字option:属性intsetsockopt(intsockfd,intlevel,intoptname,void*optval,socklen_toptlen)功能:获得/设置套接字属性参数:sockfd:套接字描述符level:协议层optname:选项名optval:选项值optlen:选项值大小返回值:......
  • 0910-0911 shell编程与基础算法(leetCode )
    栈的定义栈(Stack),也称为堆栈,它是一种特殊的线性表,只允许在表的一端进行插入和删除操作。允许在表操作的一端称为栈顶(Top),另一端称为栈底(Bottom)。栈顶是动态变化的,它由一个称为栈顶指针(top)的变量指示。当表中没有元素时,称为空栈。栈的插入操作称为入栈或进栈,删除操作称为出栈或......
  • day09(网络编程基础)服务器模型
    目录服务器模型循环服务器并发服务器多进程多线程​​​​​​​IO多路复用​​​​​​​并发服务器总结服务器模型在网络通信中,通常一个服务器要连接多个客户端为了处理多个客户端的请求,通常有多种表现形式循环服务器一个服务器在同一时间只能处理一个客户......
  • ##嵌入式学习之Linux系统编程##--标准I/O函数
    day01主要内容:linux系统下一切皆文件标准IO---标准库文件IO---系统调用制作库---静态库、动态库基本概念:标准I/O:文件:一组相关数据的有序集合。文件名:这个数据集合的名称。文件类型:lsp-bcd系统调用用户空间进程访问内核的接口把用户从底层的硬件编程......
  • Python3 学习笔记6-os 模块、错误和异常、面向对象编程、类的专有方法、命名空间和作
    目录一、os模块: 常用方法: 二、错误和异常:(1)语法错误:(2)异常:(3)异常处理:(4)抛出异常:(5)用户自定义异常:(6)清理行为:(7)with语句:三、面向对象编程: (1)类和对象:(2)继承:(3)封装:(4)多态:(5)运算符重载: 四、类的专有方法:(1)__init__(self,...):(2)__del__(self):(3)__repr__(self):(4)__set......
  • 1765asp.net古镇旅游网站VS开发sqlserver数据库web结构c#编程web网页设计
    博主介绍:专注于Java.net phpphython 小程序等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟我的博客空间发布了1000+毕设题目方便大家学习使用感兴趣的可以先收藏起来,还有大家在......
  • DataGrip或者intellijIDEA 远程链接数据库的时候下载驱动失败 出现错误:https://downlo
    一、问题本人使用DataGrip版本:2023.1在链接数据库的时候出现这个错误,无法完全加载驱动,是因为这里的maven仓库下载驱动失败,这时候需要自己手动下载驱动二、怎么解决需要手动更改下载的镜像网址,改成阿里云的镜像网址仓库服务(aliyun.com)这三个仓库地址,可以选择其中一个......
  • C语言简单编程题(思路+源码)
    C语言简单编程题(思路+源码)【一】题目一:1.字符串的逆序(如abcdef–>fedcba)思路:首先我们用strlen()函数来获得字符串的长度,用left来表示下标为零的元素,用right来表示最后一个字符的下标,创建第三个变量,交换第一个和最后一个的元素,再left++,right–,后面的依次类推。2.代码实......