JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC访问数据库的步骤:
1.加载数据库驱动
2.获得数据库连接
3.创建SQL语句
4.执行查询
5.遍历结果集
6.关闭数据库连接
下面看一个小程序:
package com.jspring.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo1 {
public static void main(String args[])
{
query();
}
public static void query()
{
Connection conn= null;
//1.加载数据库驱动
try {
Class.forName( "com.mysql.jdbc.Driver");
//DriverManager 驱动程序管理器 在数据库和相应驱动程序之间建立连接
//2.获得数据库连接
conn=DriverManager.getConnection( "jdbc:mysql://127.0.0.1/jdbc_db","root","1234");
//3.创建语句
String sql="select * from UserTbl";
//返回一个执行SQL的语句
Statement stmt = null;
stmt = conn.createStatement();
//返回查询的
//4.执行语句
ResultSet rs = null;
rs = stmt.executeQuery(sql);
//5.遍历结果集
while(rs.next())
{
int id=rs.getInt(1);
String username=rs.getString(2);
String password=rs.getString(3);
int age=rs.getInt(4);
System.out.println(id+":"+username+":"+password+":"+age);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(conn!=null){
try{//5.关闭数据库连接
conn.close();
}catch(SQLException e){
conn=null;
e.printStackTrace();
}
}
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo1 {
public static void main(String args[])
{
query();
}
public static void query()
{
Connection conn= null;
//1.加载数据库驱动
try {
Class.forName( "com.mysql.jdbc.Driver");
//DriverManager 驱动程序管理器 在数据库和相应驱动程序之间建立连接
//2.获得数据库连接
conn=DriverManager.getConnection( "jdbc:mysql://127.0.0.1/jdbc_db","root","1234");
//3.创建语句
String sql="select * from UserTbl";
//返回一个执行SQL的语句
Statement stmt = null;
stmt = conn.createStatement();
//返回查询的
//4.执行语句
ResultSet rs = null;
rs = stmt.executeQuery(sql);
//5.遍历结果集
while(rs.next())
{
int id=rs.getInt(1);
String username=rs.getString(2);
String password=rs.getString(3);
int age=rs.getInt(4);
System.out.println(id+":"+username+":"+password+":"+age);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(conn!=null){
try{//5.关闭数据库连接
conn.close();
}catch(SQLException e){
conn=null;
e.printStackTrace();
}
}
}
}
}
1.此程序首先要在这个程序所在的工程中插入连接数据库的jar包(然后右击选择build path-----add to build path),然后才能执行程序否则会出现以下错误提示:
这个程序通过执行
Class.forName("com.mysql.jdbc.Driver");
这个语句实现加载驱动,因为我用的是MYSQL的数据库,所以加载的mysql的驱动,如果你用的是其他数据库,那就要加载其他数据库的jar包。
这个语句实现加载驱动,因为我用的是MYSQL的数据库,所以加载的mysql的驱动,如果你用的是其他数据库,那就要加载其他数据库的jar包。
2.和数据库建立连接通过
conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/jdbc_db","root","1234");
语句,getConnection函数中三个参数分别是url,user,password
语句,getConnection函数中三个参数分别是url,user,password
3.创建语句,在这个程序中只建立了一个查询语句,我们可以根据自己的业务需求建立其他的语句,例如插入,更新等语句
4.Statement是静态的SQL语句,用来盛放SQL语句,他有一个子类为PreparedStatement为预编译静态语句
5.ResultSet 是用来盛放查询结果的一个集合
程序运行结果:
如果usertbl表中有数据就会打印在控制台上如
如果usertbl表中没有数据那么控制台上就没有任何数据
如果数据库中没有这个表则会出现
在使用JDBC时一定要加载数据库驱动!
一般情况下,我们会采用下面这种方法和数据库进行连接
将数据库的驱动连接和url,user,password都写到配置文件中,通过从配置文件中读数据来建立连接,看下面程序
public
class ConnectionUtil {
public Connection openConnection(){
String driver = "";
String url = "";
String user = "";
String password = "";
Properties prop = new Properties();
Connection conn = null;
try {
//加载属性文件
prop.load( this.getClass().getClassLoader().getResourceAsStream( "DBConfig.properties"));
driver = prop.getProperty( "driver");
url = prop.getProperty( "url");
user = prop.getProperty( "user");
password = prop.getProperty( "password");
//Class.forName加载驱动
Class.forName(driver);
//DriverManager获得连接
conn = DriverManager.getConnection(url,user,password);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
public Connection openConnection(){
String driver = "";
String url = "";
String user = "";
String password = "";
Properties prop = new Properties();
Connection conn = null;
try {
//加载属性文件
prop.load( this.getClass().getClassLoader().getResourceAsStream( "DBConfig.properties"));
driver = prop.getProperty( "driver");
url = prop.getProperty( "url");
user = prop.getProperty( "user");
password = prop.getProperty( "password");
//Class.forName加载驱动
Class.forName(driver);
//DriverManager获得连接
conn = DriverManager.getConnection(url,user,password);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
在和数据库进行连接时,我们只需要调用这个类就可以了
在第一个程序中我们提到了一个PreparedStatement类,现在我们看一下关于这个类的使用情况
public
class Main {
public static void main(String[] args) {
Customer c = new Customer();
c.setName( "hans");
c.setEmail( "583480612@qq.com");
TestPrepareStatement.add(c);
}
public static void add(Customer c) {
Connection conn = new ConnectionUtil().openConnection();
String sql = "insert into CustomerTbl(name,email) values(?,?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, c.getName());
pstmt.setString(2, c.getEmail());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Customer c = new Customer();
c.setName( "hans");
c.setEmail( "583480612@qq.com");
TestPrepareStatement.add(c);
}
public static void add(Customer c) {
Connection conn = new ConnectionUtil().openConnection();
String sql = "insert into CustomerTbl(name,email) values(?,?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, c.getName());
pstmt.setString(2, c.getEmail());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
PreparedStatement为预编译静态SQL语句,就是在sql语句中留下一个缺口,由调用这个函数的的成员来补全。
©著作权归作者所有:来自51CTO博客作者冯魁的原创作品,如需转载,请注明出处,否则将追究法律责任
0
收藏
推荐专栏更多
猜你喜欢
我的友情链接
jquery之empty()与remove()区别
python的排序函数sort,sorted在列表排序和字典排序中的应用详解和举例
UML建模之时序图(Sequence Diagram)
教你打包Java程序,jar转exe随处可跑
用Java写算法之五:快速排序
[解决]ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
一个经典的JDBC连接MySQL的程序
tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复过程
添加打印机提示打印后台程序服务没有运行的解决方法
在C#应用程序中,对comboBox这个控件的一些基本用法
该文件没有程序与之关联来执行操作,请在控制面板的文件夹选项中创建关联的解决办法
PostgreSQL的B-tree索引
PostgreSQL pg_rewind实例--could not find previous WA
redis geo 地理位置系应用战案例
PostgreSQL逻辑备份pg_dump使用及其原理解析
PostgreSQL如何删除不使用的xlog文件
PostgreSQL pg_ctl start超时分析
Greenplum -- segment 死机后恢复
postgresql 主备及切换-恢复方案
扫一扫,领取大礼包
转载于:https://blog.51cto.com/tscfengkui/447362
Ctrl+Enter 发布
发布
取消