首页 > 编程 > Java > 正文

jdbc连接数据库实例详解

2019-11-26 09:15:18
字体:
来源:转载
供稿:网友

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.Driverurl=jdbc:mysql://localhost:3306/testjdbcuserName=rootpassword=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("查询成功");    }  } }

以上就是相关知识以及相关代码,感谢大家对武林网的支持。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表