jdbcj简单使用学习笔记

  jdbc是什么?Java 数据库连接,(Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。jdbc是面向关系型数据库的。

一,使用前准备工作

1,在使用jdbc之前,我们需要安装数据库,这里我使用5.26.24;不知道自己版本的可以用命令status查看。

          

2,接着我们需要相应的jar包作为MySQL数据库的驱动,不同数据库库对应的jar包、驱动类名和URL格式可以以以下链接为参考,具体使用依照自己版本酌情使用。

      http://www.cnblogs.com/kunpengit/archive/2011/12/13/2285933.html

在这里我使用:

  版本和MySQL版本不完全相同,但变更不大,并不影响使用

3,接下来我们在数据库中建一个表student,我使用数据库可视化工具navicat.大家也可以使用命令行建表。具体操作命令可以参照下面链接

http://www.cnblogs.com/bzys/archive/2013/01/20/2869029.html

 

 

 

 二,编码对MySQL数据库进行操作

 首先建一个Student类

package test.jdbc.models;

public class Student {
    int id;
    String name;
    int sex;//1为男;0为女
    int age;
    double grade;
  public Student(int id, String name, int sex, int age, double grade) {
          super();
          this.id = id;
          this.name = name;
          this.sex = sex;
          this.age = age;
          this.grade = grade;
    }
  public int getId() {
     return id;
    }
  public void setId(int id) {
    this.id = id;
    }
  public String getName() {
    return name;
    }
  public void setName(String name) {
    this.name = name;
  }
  public int getSex() {
    return sex;
  }
  public void setSex(int sex) {
    this.sex = sex;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public double getGrade() {
    return grade;
  }
  public void setGrade(double grade) {
    this.grade = grade;
  }

 }

创建一个测试类

package test.jdbc.first;

import java.sql.SQLException;
import java.util.Properties;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.util.PropertiesDocGenerator;

import test.jdbc.models.Student;

public class TestJDBC {

public static void main(String[] args) throws SQLException {
  Student student=new Student(4, "Kyler", 1, 2, 64.65);
  insert(student);

}

 

 

//向数据库中插入数据
private static int insert(Student student) throws SQLException {
Connection conn = getConn();
int i = 0;
String sql = "insert into student (id,Name,Sex,Age,grade) values(?,?,?,?,?)";
PreparedStatement preparestatement;
try {

//预编译的sql语句对象
  preparestatement = (PreparedStatement) conn.prepareStatement(sql);
  preparestatement.setInt(1, student.getId());
  preparestatement.setString(2, student.getName());
  preparestatement.setInt(3, student.getSex());
  preparestatement.setInt(4, student.getAge());
  preparestatement.setDouble(5, student.getGrade());

//  executeUpdate() 在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 //INSERTUPDATEDELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。(ddl是数据库模式定义语言,是用于描述数据库中要存储的现实世界实体的语言

//常见的DDL语句例如:创建数据库:CREATE DATABASE创建表:CREATE TABLE)

  i = preparestatement.executeUpdate();
  preparestatement.close();
  conn.close();
  } catch (SQLException e) {
    e.printStackTrace();
    }
  return i;
 }


//查询数据库中的数据

private static Integer getAll() throws SQLException {

  Connection conn = getConn();
  String sql = "select * from student";
  PreparedStatement preparestatement;
  try {
    preparestatement = (PreparedStatement)conn.prepareStatement(sql);

//在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
    ResultSet rs = preparestatement.executeQuery();

   
    int col = rs.getMetaData().getColumnCount();
    System.out.println("============================");
    while (rs.next()) {
      for (int i = 1; i <= col; i++) {
        System.out.print(rs.getString(i) + "\t");
        if ((i == 2) && (rs.getString(i).length() < 8)) {
          System.out.print("\t");
        }
       }
    System.out.println("");
    }
  System.out.println("============================");

   preparestatement.close();
    conn.close();

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


//获取连接的方法
private static Connection getConn() throws SQLException {
  Driver driver=new com.mysql.jdbc.Driver();
  //准备数据库连接的基本信息
  String url="jdbc:mysql://localhost:3306/first";
  Properties info=new Properties();
  info.put("user", "root");
  info.put("password", "");
  //获取数据库连接
  Connection connection=(Connection) driver.connect(url, info);
  return connection;
}

}

insert()执行后实验结果如下所示:

 

getAll()执行后结果如下所示

 

使用jdbc链接数据库的基本过程如下,

1,首先获取连接Connection对象,这里面包括加载驱动,传入连接的基本信息,获得连接。

2,对Connection对象传入SQL查询命令(一个字符串),获得PreparedStatement对象;

3,对PreparedStatement对象执行executeUpdate()或executeQurey()获得结果;executeUpdate()执行无返回值的sql语句。

4,关闭PreparedStatement对象和Connection对象。

每次执行sql操作都会消耗大量的资源,因此可以使用资源池对连接进行管理,以节省资源。

 

posted @ 2016-09-11 19:19  努力追上曾经的自己  阅读(155)  评论(0)    收藏  举报