package fengke.test; |
import java.sql.SQLException; |
import fengke.action.Action; |
/** |
* 最为简单Jdbc操作方式 |
* @author 锋客 |
* 学习重点:1.了解jdbc的创建过程; |
* 2.学会使用静态属性和静态块创建链接======Jdbc |
* 3.了解使用静态块创建链接的特点:控制台中输出的链接为同一个 |
* 4.学会配置url======"jdbc:mysql://127.0.0.1:3309/jdbctest?useUnicode=true&characterEncoding=utf-8" |
* 5.学会数据库的操作=====add,listall |
* 6.学会合理利用模型=====Emp |
* 7.注意驱动的加载 |
* |
*/ |
public class Test { |
|
public static void main(String[] args) throws SQLException { |
Action action = new Action(); |
System.out.println( "添加员工信息:" ); |
action.addEmp(); |
System.out.println( "查询所有员工信息:" ); |
action.listAll(); |
} |
} |
===================================================================================== |
package fengke.jdbc; |
import java.sql.Connection; |
import java.sql.DriverManager; |
import java.sql.SQLException; |
/** |
* 创建数据库连接 |
* @author 锋客 |
* 内容:使用静态的方法,产生链接对象,调用方法,返回对象 |
*/ |
public class Jdbc { |
/* |
* 通过静态方法的特点,当对象被使用时,先调用或是生成静态内容 |
* 产生Connection链接,并通过public Connection getConnection();方法 |
* 返回链接 |
* |
* 注意一下: |
* 静态方法创建的链接对象,生成只有一次(第一次调用Jdbc时),但是被多次调用,因此每次输出的链接对象都一样 |
*/ |
static private Connection connection; |
|
static { |
try { |
Class.forName( "com.mysql.jdbc.Driver" ); |
//URL地址"jdbc:mysql://主机地址/操作的数据库名?useUnicode=true&characterEncoding=utf-8" |
String url= "jdbc:mysql://127.0.0.1:3309/jdbctest?useUnicode=true&characterEncoding=utf-8" ; |
//mysql的用户名 |
String userName= "root" ; |
//mysql的密码 |
String passWord= "root" ; |
//创建链接 |
connection=DriverManager.getConnection(url, userName, passWord); |
} catch (ClassNotFoundException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} catch (SQLException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
|
} |
public Connection getConnection(){ |
//测试是否生成正确的connect |
System.out.println(connection); |
return connection; |
} |
} |
====================================================================================== |
package fengke.dao; |
import java.sql.Connection; |
import java.sql.PreparedStatement; |
import java.sql.ResultSet; |
import java.sql.SQLException; |
import fengke.jdbc.Jdbc; |
import fengke.model.Emp; |
/** |
* 数据库操作 |
* |
* @author 锋客 |
* 内容:1、获得数据库链接 2、操作数据库 |
* |
*/ |
public class JdbcDao { |
private Jdbc jdbc = new Jdbc(); |
// 实现添加数据的功能 |
public void addEmp(Emp emp) throws SQLException { |
// 获得数据库链接对象 |
Connection connection = jdbc.getConnection(); |
// 进行数据库操作 |
String sql = "insert into emp(id,name,sex) values(?,?,?)" ; |
// 设置操作内容 |
PreparedStatement statement = connection.prepareStatement(sql); |
statement.setInt( 1 , emp.getId()); |
statement.setString( 2 , emp.getName()); |
statement.setString( 3 , emp.getSex()); |
int rs = statement.executeUpdate(); |
System.out.println( "添加成功" +rs+ "条记录" ); |
} |
// 实现查询数据的功能 |
public void listAll() throws SQLException { |
// 获得数据库链接对象 |
Connection connection = jdbc.getConnection(); |
// 进行数据库操作 |
String sql= "select*from emp" ; |
PreparedStatement statement=connection.prepareStatement(sql); |
ResultSet rs = statement.executeQuery(); |
while (rs.next()){ |
System.out.println(rs.getInt( 1 )+ "|" +rs.getString( 2 )+ "|" +rs.getString( 3 )); |
} |
System.out.println( "结束输出!!!" ); |
} |
} |
====================================================================================== |
package fengke.action; |
import java.sql.SQLException; |
import java.util.Random; |
import fengke.dao.JdbcDao; |
import fengke.model.Emp; |
/** |
* 功能层 |
* @author 锋客 |
* 实现添加和查询的功能 |
* |
*/ |
public class Action { |
|
public void addEmp() throws SQLException{ |
//通过循环将信息输入到数据库中 |
for ( int i= 1 ;i< 10 ;i++){ |
String name= "fengke" +i; |
System.out.println(name); |
Emp emp= new Emp(i,name, "man" ); |
JdbcDao dao= new JdbcDao(); |
dao.addEmp(emp); |
} |
} |
|
public void listAll() throws SQLException{ |
JdbcDao dao= new JdbcDao(); |
dao.listAll(); |
} |
} |
================================================================================= |
package fengke.model; |
/** |
* 模型 |
* @author 锋客 |
* 内容:员工的基本信息 |
*/ |
public class Emp { |
private int id; //员工id |
private String name; //员工姓名 |
private String sex; //员工性别 |
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 String getSex() { |
return sex; |
} |
public void setSex(String sex) { |
this .sex = sex; |
} |
public Emp() { |
super (); |
// TODO Auto-generated constructor stub |
} |
//生成员工对象 |
public Emp( int id, String name, String sex) { |
super (); |
this .id = id; |
this .name = name; |
this .sex = sex; |
} |
|
} |