JAVA数据库例子详解_jdbc连接数据库实例详解

JDBC简介

JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供填统一的访问。JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API。它是由java语言编写完成,所以具有很好的跨平台特性,使用JDBC编写的数据库应用程序可以在任何支持java的平台上运行,而不必在不同的平台上编写不同的应用程序。

JDBC编程步骤

(1)加载驱动程序:

下载驱动包 : http://dev.mysql.com/downloads/connector/j/

解压,得到 jar文件。将该文件复制到Java工程目录Java Resources/Libraries/ 下,→ buildpath 。

(2)获得数据库连接

(3)创建Statement对象:

(4)向数据库发送SQL命令

(5)处理数据库的返回结果(ResultSet类)

package com.baidu.emp.jdbcTest;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import com.mysql.jdbc.Driver;

/**

* 开始使用jdbc连接数据库

* @author Admin

*

*/

public class Test001 {

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

/**

* 加载驱动

*/

// 方法一:

/*

* import java.sql.DriverManager; import com.mysql.jdbc.Driver;

*/

// Driver driver = new Driver();

// DriverManager.registerDriver(driver);

// 方法二:(推荐使用)

Class.forName("com.mysql.jdbc.Driver");

/**

* 创建链接

*/

String url = "jdbc:mysql://localhost:3306/testjdbc";

String user = "root";

String password = "root";

Connection connection = DriverManager.getConnection(url, user, password);

// 创建statement对象

Statement statement = connection.createStatement();

/**

* 执行SQL,获取结果集

*/

String sql = "select * from test01";

ResultSet result = statement.executeQuery(sql);

// 遍历结果集

while (result.next()) {

String name = result.getString("name");

int id = result.getInt("id");

System.out.println(name + "\t" + id);

}

/**

* 关闭链接,释放资源

*/

result.close();

statement.close();

connection.close();

}

}

防止SQL注入改用prepareStatement

package com.boya.emp.jdbcTest;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

/**

* SQL注入,使用prepareStatement对象进行预编译

* @author Admin

*

*/

public class Test002 {

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

/**

* 加载驱动

*/

Class.forName("com.mysql.jdbc.Driver");

/**

* 创建链接

*/

String url = "jdbc:mysql://localhost:3306/testjdbc";

String user = "root";

String password = "root";

Connection connection = DriverManager.getConnection(url, user, password);

// 写SQL

String sql = "select * from test01 where id = ?";

//创建statement对象,预编译

PreparedStatement statement = connection.prepareStatement(sql);

//设置参数

statement.setInt(1, 2);

/**

* 执行SQL,获取结果集

*/

ResultSet result = statement.executeQuery();

// 遍历结果集

while (result.next()) {

String name = result.getString("name");

int id = result.getInt("id");

System.out.println(name + "\t" + id);

}

/**

* 关闭链接,释放资源

*/

result.close();

statement.close();

connection.close();

}

}

进行代码优化,设置配置文件,工具类,实现增删该查

增加配置文件方便修改数据库,用户登录。。。

jdbc.properties(配置文件名)

driverName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/testjdbc

userName=root

password=root

注意写配置文件时中间不可以有空格,引号之类的

工具类:增强了代码的复用性

package com.baidu.emp.utils;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

import org.junit.Test;

public class JdbcUtils {

static String driverClassName;

static String url;

static String user;

static String password;

static {

// 创建配置文件对象

Properties properties = new Properties();

// 加载配置文件输入流

InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");

// 重新加载配置文件

try {

properties.load(inputStream);

// 获取配置文件的值

driverClassName = properties.getProperty("driverName");

url = properties.getProperty("url");

user = properties.getProperty("userName");

password = properties.getProperty("password");

Class.forName(driverClassName);

} catch (Exception e) {

// 抛出异常

throw new RuntimeException(e);

}

}

/**

* 获取连接

*/

@Test

public void testName() throws Exception {

System.out.println(driverClassName);

}

public static Connection getConnection() {

Connection connection = null;

try {

connection = DriverManager.getConnection(url, user, password);

} catch (SQLException e) {

// 抛出异常

throw new RuntimeException(e);

}

return connection;

}

/**

* 关闭链接,释放资源

*/

public static void close(Connection connection, PreparedStatement statement, ResultSet resultSet) {

try {

if (resultSet != null) {

resultSet.close();

}

resultSet = null; // 垃圾及时清除

//注意,不要弄成死循环

close(connection, statement);

} catch (SQLException e) {

throw new RuntimeException(e);

}

}

/**

* 增删改释放资源

*/

public static void close(Connection connection, PreparedStatement statement) {

try {

if (connection != null) {

connection.close();

}

connection = null;

if (statement != null) {

statement.close();

}

statement = null;

} catch (SQLException e) {

throw new RuntimeException(e);

}

}

}

测试增删改查:

package com.baidu.emp.jdbcTest;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import com.baidu.emp.utils.JdbcUtils;

/**

* 使用jdbcUtils连接数据库进行增删改查

*

* @author Admin

*

*/

public class Test003 {

// 初始化值

Connection connection = null;

PreparedStatement statement = null;

ResultSet result = null;

@Before

public void start() throws Exception {

// 创建链接

connection = JdbcUtils.getConnection();

System.out.println("创建链接");

}

@After

public void end() throws Exception {

// 关闭链接

JdbcUtils.close(connection, statement, result);

System.out.println("关闭链接");

}

/**

*插入数据

* @throws Exception

*/

@Test

public void add() throws Exception {

String sql = "insert into test01 values(null,?)";

statement = connection.prepareStatement(sql);

statement.setString(1, "李四");

int result = statement.executeUpdate();

if (result!=0) {

System.out.println("添加成功");

}

}

/**

* 删除数据

* @throws Exception

*/

@Test

public void del() throws Exception {

String sql = "delete from test01 where id =?";

statement = connection.prepareStatement(sql);

statement.setInt(1,3);

int result = statement.executeUpdate();

if (result!=0) {

System.out.println("删除成功");

}

}

/**

* 修改数据

* @throws Exception

*/

@Test

public void change() throws Exception {

String sql = "update test01 set name = ? where id = ?";

statement = connection.prepareStatement(sql);

statement.setString(1, "张飞");

statement.setInt(2, 2);

int result = statement.executeUpdate();

if (result!=0) {

System.out.println("修改成功");

}

}

/**

* 查询全部数据

* @throws Exception

*/

@Test

public void findAll() throws Exception {

String sql = "select id , name from test01";

statement = connection.prepareStatement(sql);

result = statement.executeQuery();

if (result.next()) {

System.out.println("查询成功");

}

}

/**

* 条件查询数据

* @throws Exception

*/

@Test

public void findOne() throws Exception {

String sql = "select id , name from test01 where id = ?";

statement = connection.prepareStatement(sql);

statement.setInt(1, 2);

result = statement.executeQuery();

if (result.next()) {

System.out.println("查询成功");

}

}

}

以上就是相关知识以及相关代码,感谢大家对脚本之家的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值