本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学习一下。我现在很迫不及待用JAVA想来实现以下对数据库的增删改查。想实现就来看Java是怎么操作数据库的,回想下.Net里你可能会配置web.Config,或者你去写一些DBhelper类然后调用里面的自己定义的一些增删改查的方法,更或者你去配一些数据控件等等往往发现操作基本都是一体化的简单。现在面对Java呢?

JDBC技术

百度简介 :  JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 JDBC并不能直接访问数据库,需要借助于数据库厂商提供的JDBC驱动程序。

JDBC中常用的类和接口可用于我们编程开发,利用这些类和接口可以方便的经行数据访问和处理。这些类和接口都位于java.sal包中。具体的下面一一揭晓~~

废话一堆后,其实这些废话都可以去百度找到的有木有发现百度很强大,很犀利,很友好,很无敌啊~~~~扯远了。。。。下面开始JDBC的旅途.

数据库连接

如果要在Java访问数据库,首先要加载一个数据库驱动,数据库驱动只需要在第一次访问时加载一次。然后再每次访问数据库时创建一个Connection实例,获取数据库连接,这样就可以执行操作数据库的SQL语句。最后用完后释放掉数据库的连接。

数据库驱动类

不同的数据库实现JDBC接口不同,所以就产生了不同的数据库驱动包。驱动包就包含一些负责数据库连接的类,把我们要操作的SQL语句传递到里面去。因为我上班的PC用的是SQL2012,所以我们要去这里http://www.microsoft.com/zh-cn/search/DownloadResults.aspx?q=jdbc下载下面的驱动:

可能会有人说为什么下这个呢怎么不是下面的3.0或者2.0的驱动呢!因为我的SQL版本是2012的所以下载这个,如果你是2008或者2005的话你就可以下载下面的3.0驱动包!说这么多在不明白就点进去看下:

看明白就去下载适合自己SQL版本的驱动吧!

加载数据库驱动类

Java加载数据库驱动的方法是调用Class类的静态方法forName().写法如下:

1

Class.forName(String driveManager);

forName()方法的参数用于指定要加载的数据库驱动。加载成功,将会加载驱动类注册给DriveManager.失败的话抛出ClassNotFoundExecption异常。

在扯一点没必要的闲话:为了把程序的出错性尽量的排斥掉,我可不希望我第一次用Java的JDBC就出一堆的错误,然后对在学者去用工具然后跳错。因为操作的是我PC本地的SQL12数据库,我准备一切都用默认(端口)的东西试试先。所以我们要开始就启动我们SQL网络配置协议TCP/IP设置为启动,当然已经启动的话就没必要在此去启动啦!

连接SQL2012数据库

把我们刚才下的驱动加载到 MyEclipse中来,如下:

好萌的东西,像个牛奶瓶o(^▽^)o。

下面开始我们SQL2012的数据连接操作:

package myJava.jdbc;

import java.sql.*;

public class SelectQuery {

Connection conn;

//创建一个返回值为Connection的方法

public Connection getConnection(){

try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

System.out.println("数据库驱动加载成功");

conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB_ShowData","sa","123456");

if(conn!=null){

System.out.println("数据库连接成功");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//返回Connection对象

return conn;

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

SelectQuery getcon = new  SelectQuery();

getcon.getConnection();

}

}

运行结果如下:

看到这个应该算是一路顺风吧!没出什么异常,然后我们趁热打铁连接成功啦查询一下有何不可,我搞一个很简单的查询具体代码如下:

package myJava.jdbc;

import java.sql.*;

public class SelectQuery {

Connection conn;

//创建一个返回值为Connection的方法

public Connection getConnection(){

try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

System.out.println("数据库驱动加载成功");

conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB_ShowData","sa","123456");

if(conn!=null){

System.out.println("数据库连接成功");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//返回Connection对象

return conn;

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

SelectQuery getcon = new  SelectQuery();

getcon.getConnection();

//查询

String sql = "SELECT * FROM [dbo].[User]";

try {

PreparedStatement Ps = getcon.conn.prepareStatement(sql);

ResultSet Rs = Ps.executeQuery();

while(Rs.next()){

String name = Rs.getString("Name");

String password = Rs.getString("Password");

System.out.println(name);

System.out.println(password);

}

Rs.close();

Ps.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

运行结果如下:

结果出来啦o(^▽^)o不是重点,重点是这个查询里面我们都用到了JDBC技术中的那些类和接口,或许你看了上面的代码还是茫然我说的是和我一样入门的人,那么下面的解释后,你就懂得啦!

首先是我们在getConnection中用到的 DriverManager类

DriverManager类是用来管理数据库中所有的驱动程序,是JDBC的管理层,作用用户和驱动程序之间,并在数据库的驱动之间建立连接。DriverManager类中的方法都是静态方法,所以用的时候不需要实例化,直接调用类名就可以。

DriverManager类的常用方法如下:

方法 功能

getConnection(String url,String user,String password) 指定3个参数,连接数据库的url,数据库用户名,数据库密码

setLoginTimeout() 获取驱动程序试图登录到某一个数据库时可以等待的最长时间

printIn(String Message) 将一条消息打印到当前JDBC日志流中

其次我们看到就是Connection接口

Connection接口代表与特定的数据库的连接。要对数据表中的数据经行操作,首先要获取数据库连接。

Connection接口常用的方法如下:

方法 功能

createStatement() 创建Statement对象

createStatement(int resultSetType,int resultSetConcurrency) 创建一个Statement对象,该对象将生产具有给定类型,并发性和可保存性的ResultSet对象

prepareStatement() 创建预处理对象PreparedStatement

isReadOnly() 查看当前的Connection对象的读取模式是否为之读形式

setReadOnly() 设置当前Connection对象的读写模式i,默认是非只读模式

commit() 使所有上一次提交,回滚后进行的更改成为持久更改

roolback() 取消再当前事物中经行的所有更改,并释放此Connection对象当前持有的所有数据库锁

close() 立即释放Connection对象数据库和JDBC资源

PreparedStatement接口

PreparedStatement接口继承Statemetn接口,用于执行动态的SQL语句,通过PreparedStatement实例执行SQL语句,将被预编译并保存到PreparedStatement实例中,从而可以反复的执行SQL语句。可以通过Connection类的prepareStatement()方法获取PreparedStatement对象。PreparedStatement接口常用的方法:

方法 功能描述

execute() 在此PreparedStatement对象中执行SQL语句,该语句可以是任何类型的SQL语句

executeQuery() 在此PreparedStatement对象中SQL查询语句,返回结果为查询结果集ResultSet对象

executeUpadte() 在此PreparedStatement对象中执行SQL语句,该SQL语句必须是个INSET,UPDATE,DELETE语句,或者返回没有返回值的DDl语句

setByte(int pIndex,byte bt) 将参数pIndex位置上设置为给定的byte型参数值bt

setDouble(int pIndex,double dou) 将参数pIndex位置上设置为给定的double型参数值dou

setInt(int pInde,int x) 将参数pIndex位置上设置为给定的int型参数值x

setObject(int pIndex,Object o) 将参数pIndex位置上设置为给定的Object型参数值o

setString(int pIndex,String str) 将参数pIndex位置上设置为给定的String型参数值str

ResultSet接口

ResultSet接口类似一张数据表,用来暂时存放数据库查询操作获得的结果集。ResultSet实例具有指向当前数据行的指定,指针开始的位置在查询的结果集第一条记录的前面。在获取查询结果集时,可通过next()方法将指针向下移动。如果存在下一行,还方法返回true,否则返回false.

方法 功能

getInt() 以intt形式获取ResultSet对象的当前行的指定值

getFloat() 以float形式获取ResultSet对象的当前行的指定值

getDate() 以Data形式获取ResultSet对象的当前行的指定值

getBoolean() 以boolean形式获取ResultSet对象的当前行的指定值

getString() 以String形式获取ResultSet对象的当前行的指定值

getObject() 以Object形式获取ResultSet对象的当前行的指定值

frist() 将指针移到当前记录的第一行

last() 将指针移到当前记录的最后一行

next() 将指针下移一行

beforeFirst() 将指针移到集合的开头

afterLast() 将指针移到集合的尾部

absolute(int index) 将指针一到ResultSet指定编号的行

inFist() 判断指针是否位于当前ResultSet集合的第一行

isLast() 判断指针是否位于当前ResultSet集合的最后一行

updateInt() 用指定的int值更新指定列

upadateFloat() 用指定的float值更新指定列

updateLong() 用指定的Long值更新指定列

updateString() 用String值更新指定列

updateObject() 用Object值更新指定列

updateNull() 将指定列的值改为NULL

updateDate() 用指定的Date值更新指定列

updateDouble() 用指定的double值更新指定列

getRow() 查看当前的索引号

insertRow() 将插入行的内容插入到数据库

updateRow() 将当前行的内容同步到数据库

deleteRow() 删除当前行,但不同步到数据库中,在执行close()方法后同步到数据库中

JAVA数据库编程(JDBC技术)-入门笔记相关推荐

  1. Java数据库编程(JDBC)-入门笔记

    数据库(DB) 简介: • DB: Database = Data + Base • 数据库:数据+库,存放数据的库(场所) • 数据:规范.半规范.不规范数据 • 库 – 一个空间,一个场所 – 停 ...

  2. java的数据库连接编程(jdbc)技术_Java的数据库连接编程(JDBC)技术

    Java的数据库连接编程(JDBC)技术 Java的数据库连接编程(JDBC)技术 [本讲的知识要点]:JDBC.JDBC的工作原理,访问数据库的方法.Statement.PreparedStatem ...

  3. java基础类库——java数据库编程,JDBC连接(原生数据库连接)(十)

    java数据库编程,JDBC连接(原生数据库连接) JDBC严格来讲不属于一门技术,它属于一种服务.所有的操作流程都是固定的.JDBC是java提供的数据库操作的一个标准(它就是一组相关的标准接口), ...

  4. 《Java并发编程的艺术》笔记

    <Java并发编程的艺术>笔记 第1章 并发编程的挑战 1.1 上下文切换 CPU通过时间片分配算法来循环执行任务,任务从保存到再加载的过程就是一次上下文切换. 减少上下文切换的方法有4种 ...

  5. 《Java 并发编程实战》--读书笔记

    Java 并发编程实战 注: 极客时间<Java 并发编程实战>–读书笔记 GitHub:https://github.com/ByrsH/Reading-notes/blob/maste ...

  6. 《Java并发编程实践》学习笔记之一:基础知识

    <Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念:  (2)进程:是一种活动,它是由一个动作序列组成 ...

  7. java数据库编程——元数据(metadata)+web 与企业应用中的连接管理

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java数据库编程--元数据(metadata)+web 与企业应用中的连接管 ...

  8. java数据库编程——事务

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java数据库编程--事务 的基础知识 : 2)for database co ...

  9. java数据库编程——执行查询操作(二)

    [0]README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行查询操作(二) 的基础知识 : 2) 本文和 ...

最新文章

  1. 独家 | SVP:一种用于深度学习的高效数据选择方法
  2. 互联网时代的云服务器四大功能
  3. div超出不换行_DIV元素不换行
  4. python的requests.session()_Python+requests之session保持会话
  5. 案例:返回固定页面的http服务器
  6. “睡服”面试官系列第十六篇之Symbol(建议收藏学习)
  7. SSLOJ 1335.蛋糕切割
  8. python 字典列表指定key排序
  9. Microsoft .Net Remoting系列专题之一:.Net Remoting基础篇
  10. 超神学院暗物质计算机,超神学院之进击的赛亚人
  11. Python学习指南——1.常用库说明
  12. AutoLayout 讲解
  13. 《金字塔原理》学习笔记 | 第4篇—演示的逻辑
  14. springboot配置文件yml格式
  15. Markdown 下载安装
  16. 【HighCharts系列教程】七、导出属性——exporting
  17. 从零开始开发Python程序(五)—— 把文字排版成一张图片
  18. 移动硬盘中安装Ubuntu 20.10系统史上最详细(终结篇)
  19. 如何将多个Excel 表合并成一个
  20. 触摸屏与TSC2005触摸屏控制器

热门文章

  1. 【Python】ime series:时间序列
  2. Facebook:使用Libra完成第一笔交易
  3. “解剖”HIGO徐易容:关于创业、后悔、喝酒和滑雪
  4. 2017西南计算机数学基础,[0838]《计算机数学基础》西南大学 2017 秋学期 计算机专业 作业题目及参考答案资料讲解.docx...
  5. php的数据校验,php 数据类型校验函数的简单示例
  6. 每日一博 - Semaphore使用场景分析以及源码分析
  7. 每日一博 - ThreadLocal VS InheritableThreadLocal VS TransmittableThreadLocal
  8. 实战SSM_O2O商铺_39【前端展示】首页轮播图和一级商铺Dao+Service+Controller层的实现
  9. 基础JavaScript_Day04
  10. 学习笔记Spark(四)—— Spark编程基础(创建RDD、RDD算子、文件读取与存储)