JDBC连接SQL Server数据库
2015-08-12 18:05
363 查看
JDBC连接SQL Server数据库
数据库驱动的概念
JDBC数据库厂商提供的用来操作数据库用的jar包就是数据库驱动。各个厂商如果提供各自的数据库驱动的话会导致开发人员学习成本太高,所以sun公司提供了一套数据库驱动应该遵循的接口规范,这套规范就叫做JDBC,本质上是很多的接口。由于所有的数据库驱动都遵循JDBC规范,我们在学习和使用数据库时只要学习JDBC中的接口就可以了。
下面是步骤:
1.注册数据库驱动
DriverManager.registerDriver(new Driver());//缺点一:观察mysqlDriver源码发现此方法导致了数据库驱动被注册了两次。缺点二:整个程序域mysql数据库驱动绑定增加了耦合性
Class.forName(“com.mysql.jdbc.Driver”);
2.获取连接
DriverManager.getConnection(url, user, password);
~url的写法:
Oracle写法:jdbc:oracle:thin:@localhost:1521:sid
SqlServer—jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
MySql—jdbc:mysql://localhost:3306/sid
~url可以接的参数
user、password
useUnicode=true&characterEncoding=UTF-8
3.获取传输器
createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
4.利用传输器执行sql语句获取结果集
executeQuery(String sql) :用于向数据发送查询语句。
executeUpdate(String sql):用于向数据库发送insert、update或delete语句
execute(String sql):用于向数据库发送任意sql语句
5.遍历结果集取出结构
ResultSet以表的样式在内存中保存了查询结果,其中还维护了一个游标,最开始的时候游标在第一行之前,每调用一次next()方法就试图下移一行,如果移动成功返回true;ResultSet还提供了很多个Get方法,用来获取查询结果中的不同类型的数据。
除了next方法,还有以下方法可以用来遍历结果集:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
6.释放资源
conn是一个有限的资源,用完立即要释放表
stat占用内存,所以使用完后也要释放
rs占用内存,所以使用完后也要释放
释放时后创建的先释放
现在来个例子:
在注册的时候向数据库里面增加一个用户
运行之后可以看到用户数据成功的被插入到数据库中。。。。
数据库驱动的概念
JDBC数据库厂商提供的用来操作数据库用的jar包就是数据库驱动。各个厂商如果提供各自的数据库驱动的话会导致开发人员学习成本太高,所以sun公司提供了一套数据库驱动应该遵循的接口规范,这套规范就叫做JDBC,本质上是很多的接口。由于所有的数据库驱动都遵循JDBC规范,我们在学习和使用数据库时只要学习JDBC中的接口就可以了。
下面是步骤:
1.注册数据库驱动
DriverManager.registerDriver(new Driver());//缺点一:观察mysqlDriver源码发现此方法导致了数据库驱动被注册了两次。缺点二:整个程序域mysql数据库驱动绑定增加了耦合性
Class.forName(“com.mysql.jdbc.Driver”);
2.获取连接
DriverManager.getConnection(url, user, password);
~url的写法:
Oracle写法:jdbc:oracle:thin:@localhost:1521:sid
SqlServer—jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
MySql—jdbc:mysql://localhost:3306/sid
~url可以接的参数
user、password
useUnicode=true&characterEncoding=UTF-8
3.获取传输器
createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
4.利用传输器执行sql语句获取结果集
executeQuery(String sql) :用于向数据发送查询语句。
executeUpdate(String sql):用于向数据库发送insert、update或delete语句
execute(String sql):用于向数据库发送任意sql语句
5.遍历结果集取出结构
ResultSet以表的样式在内存中保存了查询结果,其中还维护了一个游标,最开始的时候游标在第一行之前,每调用一次next()方法就试图下移一行,如果移动成功返回true;ResultSet还提供了很多个Get方法,用来获取查询结果中的不同类型的数据。
除了next方法,还有以下方法可以用来遍历结果集:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
6.释放资源
conn是一个有限的资源,用完立即要释放表
stat占用内存,所以使用完后也要释放
rs占用内存,所以使用完后也要释放
释放时后创建的先释放
if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally{ rs = null; } } if(stat != null){ try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } finally{ stat = null; } } if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } finally{ conn = null; } }
现在来个例子:
在注册的时候向数据库里面增加一个用户
public class RegisterDao { private final static String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private final static String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=Store"; // 连接驱动 private final static String PSW = "wangjing"; private final static String USER = "wangjing"; public static boolean addUser(User user) { try { Class.forName(DRIVER); Connection connection = DriverManager.getConnection(URL, USER, PSW); String sql = "insert into register (person_id , nickname ,password ,email) values (?,?,?,?)"; PreparedStatement ps = connection.prepareStatement(sql); ps.setString(1, user.getPersonId()); ps.setString(2, user.getName()); ps.setString(3, user.getPaw()); ps.setString(4,user.getEmail()); ps.executeUpdate(); ps.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } }
运行之后可以看到用户数据成功的被插入到数据库中。。。。
相关文章推荐
- WebX5 sqllite 增删改查
- Lock wait timeout exceeded数据库死锁问题
- 【工具设置】无人值守安装SQL Server 2008 R2
- mysql 分组总和求最大值 的两种方式
- MySQL____存储过程学习笔记
- 细小知识点之MySQL(二)
- mysql 查询使用*和具体字段的问题
- SQL SERVER简单的增,删,查,改 语句 多表关联查询 (去掉关键列查询)
- Redis集群的安装测试(伪分布模式 - 主从复制)
- 安装MySQL
- mysql 数据查询出排序中的最大值和最小值
- sqlserver 存储过程 try catch TRANSACTION (转)
- Linux中使用xmanager安装oracle数据库
- MSSQL表分区的创建, 横向 纵向 多维度,多指标 分表
- oracle官网下载老版本jdk + 如何命令行下wget下载jdk
- 简单地把Excel导入mysql
- mysql查询某个字段在哪一张表中
- mysql数据表不同引擎读写机制
- EF增删查改加执行存储过程和sql语句,多种方法汇总
- asp.net中oracle 存储过程(图文)