JDBC数据库编程之数据库连接及执行查询语句

jdbc:全称java Database Connectivity  java数据库连接。 j2ee一部分

起初,基于某数据库产品的开发,必须了解某数据库的api。通过c/c++直接访问某数据库的接口来编程。但无法实现跨数据库平台开发。

后来,通过统一数据库接口实现跨平台开发,例如odbc,ado.net。而jdbc是java访问数据库平台的统一接口.

jdbc在不同数据库平台的移植不是完全的。

jdbc对于java程序一端,是统一的一个接口。对于数据库产品连接端,不是统一的。(由厂商提供)

sql六大语句:

Select

Select * from T where   … …

Insert

Insert into T values(… …)

Create

Create table T(… …)

Delete

Delete from T where… …

Update

Update T set t1=… and t2=…

Drop

Drop table T

JDBC 连接SQL SERVER

1添加数据库产品相关类库。(数据库驱动包)。配置驱动包的环境变量(ClassPath)

myeclipse:项目鼠标右键project->Properties->Java Build
Path->Libraries->Add External JARs->找到sqljdbc4加载

为什么将数据库驱动包放入项目而不是整个系统中?
放入系统中,项目与项目会产生影响,不同版本的jar包会产生冲突

2向DriverManager注册

driverManager:管理数据库的基本服务,若要连接某数据库,需要向DriverManager注册。(实例化时自动注册)

3连接数据库对象


import java.sql.*;

/**
* JDBC 连接SQL SERVER
* 2014-5-5
* @author Administrator
*/

public class Demo1 {

public static void main(String[] args) throws Exception {

//1添加数据库产品相关类库。
//2向DriverManager注册。(实例化时自动注册)
//Class是java.Lang包中的类,调用方法forName,根据字符串创建一个实例
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//new com.microsoft.sqlserver.jdbc.SQLServerDriver();

//3连接数据库对象
////jdbc:sqlserver://ip地址:端口;DatabaseName=数据库名称",账号,密码
String url="jdbc:sqlserver://183.33.129.192:1433;DatabaseName=JavaStu";
Connection conn=DriverManager.getConnection(url, "sa", "qsnprac157");
System.out.println("连接数据库成功");
}

}

执行查询sql语句

1通过连接创建语句对象

2通过语句对象执行查询sql语句,返回结果集

3循环取得结果集内容

4关闭资源(后打开的先关)


import java.sql.*;
/**
* 连接数据库并执行查询语句(不合理版)
* 2014-5-5
* @author Administrator
*
*/
public class Demo2 {

public static void main(String[] args, String Sno, String Ssex) throws Exception{
//添加驱动包
//注册
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//连接
String url="jdbc:sqlserver://113.76.233.233:1433;DatabaseName=StuManage";
String user="sa";
String password="qsnprac157";
Connection conn=DriverManager.getConnection(url, user, password);

//创建语句对象(作用:将 SQL 语句发送到数据库)
Statement stmt =conn.createStatement();
//执行给定的 SQL 语句,并将结果集返回给 ResultSet 对象
ResultSet rs=stmt.executeQuery("Select * from Student");
//循环遍历取得结果集
while(rs.next()){
System.out.println(rs.getInt("Sage"));
System.out.println(rs.getString("Ssex"));
}

//关闭资源
rs.close();
stmt.close();
conn.close();

}

}

DriverManager类:管理驱动程序的基本服务(删除、查找、注册驱动程序,建立数据库连接,获取、更新日志,设置)

Connection接口:与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果

Statement接口:执行静态 SQL 语句并返回它所生成结果的对象。

ResultSet接口:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

上一个代码的问题:如果在遍历的时候出现异常,那么资源无法关闭,逐渐积累,大量内存被占用。


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 连接数据库并执行查询语句(完美版)
* 2014-5-5
* @author Administrator
*
*/
public class Demo3 {

public static void main(String[] args, String Sno, String Ssex) {
Connection conn=null;
Statement stmt = null;
ResultSet rs=null;
//添加驱动包
//注册
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//连接
String url="jdbc:sqlserver://113.76.233.233:1433;DatabaseName=StuManage";
String user="sa";
String password="qsnprac157";
conn=DriverManager.getConnection(url, user, password);

//创建语句对象(作用:将 SQL 语句发送到数据库)
stmt =conn.createStatement();
//执行给定的 SQL 语句,并将结果集返回给 ResultSet 对象
rs=stmt.executeQuery("Select * from Student");
//循环遍历取得结果集
while(rs.next()){
System.out.println(rs.getInt("Sage"));
System.out.println(rs.getString("Ssex"));
}
}catch(ClassNotFoundException e){
e.printStackTrace();

}catch(SQLException e){
e.printStackTrace();
}

finally{
try{
//关闭资源
if(rs!=null){ //判断是否初始化成功(未初始化的话会报异常)
rs.close();
rs=null;
}
if(stmt!=null){
stmt.close(); //回收操作系统资源
stmt=null; //垃圾回收机制回收内存资源
}
if(conn!=null){
conn.close();
conn=null;
}

}catch(SQLException e){
e.printStackTrace();
}

}
}
}

java有垃圾回收机制,为什么还要使用close()方法回收垃圾

垃圾回收机制只能回收内存资源。其他资源(io设备,进程,cpu等),需要显式的释放

参考资料:尚学堂马士兵视频教程。

时间: 2024-10-10 23:09:19

JDBC数据库编程之数据库连接及执行查询语句的相关文章

JDBC数据库编程之数据库连接及操作数据

jdbc:全称java Database Connectivity  java数据库连接. 起初,基于某数据库产品的开发,必须了解某数据库的api.通过c/c++直接访问某数据库的接口来编程.但无法实现跨数据库平台开发. 后来,通过统一数据库接口实现跨平台开发,例如odbc,ado.net.而jdbc是java访问数据库平台的统一接口. jdbc在不同数据库平台的移植不是完全的. jdbc对于java程序一端,是统一的一个接口.对于数据库产品连接端,不是统一的.(由厂商提供) sql六大语句:

JDBC 数据库异常 Exception 关闭的(语句,连接,ResultSet)

如果在rs.next()之前关闭了Statement或PreparedStatement,会导致下面的异常: java.sql.SQLException: 关闭的语句: next 如果在rs.next()之前关闭了Connection,会导致下面的异常: java.sql.SQLException: 关闭的连接: next问题 如果在rs.next()之前关闭了ResultSet,会导致下面的异常: java.sql.SQLException: 关闭的 Resultset: next JDBC

03.JDBC数据库编程之处理DML语句

转载请标明出处:http://blog.csdn.net/u012637501 一.DML与Statement接口 1.DML(Data manipulation language) 数据库操作语句,用于添加.删除.更新和查询数据库纪录,并检查数据库的完整性.常用的语句关键字主要包括insert.delete.update等. (1)添加/修改/删除表数据 ■增加一行数据:(思想:往哪张表添加?给哪几行添加值?分别是什么值?) insert  into  表名  (列1,列2,...,列n)  

JDBC数据库编程

***********************************************声明****************************************************** 原创作品,出自 "晓风残月xj" 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj). 由于各种原因,可能存在诸多不足,欢迎斧正! *******************************************

JDBC数据库编程基本流程

1.加载驱动类 Class.forName("");   2.创建数据库连接 Connection con = DriverManager.getConnection(url, user, password);   3.创建Statement对象 Statement stat = con.createStatement();   4.数据库操作 stat.executeUpdate("SQL更新语句"); ResultSet rs = stat.execulteQu

JDBC数据库编程常用接口(转)

JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口(API),制定了统一的访问各种关系数据库的标准接口,为各个数据库厂商提供了标准接口的实现.这东西能够实现软件的扩平台性.JDBC是一种底层API,在访问数据库是需要在业务逻辑中直接嵌入SQL语句.JDBC不能够直接访问数据库,必须依赖数据库厂商提供的JDBC驱动程序完成以下三步工作1.同数据库建立连接:2.向数据库发送SQL语句:3.处理从数据库返回的结果. *JDBC驱动 1.JDBC-ODBC

JDBC与JAVA数据库编程

一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建和管理与数据源的连接 b) 发送SQL数据命令到数据源 c) 提取并处理由数据源返回的结果集 3. JDBC可分为两层 a) 驱动程序管理接口 b) JDBC API 4. Java.sql包中定义的常用基本的JDBC API a) 类DriverManager:管理一组JDBC驱动程序的基本服务

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

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

C#—连接SQLserver数据库,并执行查询语句代码

//字段ArticleID,ArticleName,ArticleNumber,Unit,Weight,Price,Currency,IsIuggage,IsQuarantine string str = myArticleInfo[i].ArticleID.ToString();//取物品编码进行查询 string strconn = "Data Source=192.168.100.132;Initial Catalog=CustomsPlatform;User ID=sa;password