学习了JDBC连接MySql的几个主要步骤:
先把封装相关东西的代码贴出来:
public class DBUtils {
/**
* 数据库驱动类路径
*/
public static final String DRIVER="com.mysql.jdbc.Driver";
/**
* 数据库连接的url地址
*/
public static final String URL="jdbc:mysql://localhost:3306/mymusic";
/**
* 用户名
*/
public static final String USERNAME="root";
/**
* 密码
*/
public static final String PASSWORD="123456";
/**
* 静态语句块,只会在类加载时执行一次,不会反复加载
*/
static{
try {
//加载驱动
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConn(){
try {
return DriverManager.getConnection(URL,USERNAME,PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
1.加载驱动
方式一:Class.forName(DRIVER);
一般都用这种方式
方式二:DriverManager.registerDriver(DRIVER);
会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。2.获取连接
Connection conn = DBUtils.getConn();
//即Connection conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
URL用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:
3.获取执行sql语句的命令对象
三种Statement类:
Statement:由createStatement创建,用于发送简单的SQL语句(不带参数)。
PreparedStatement :继承自Statement接口,由preparedStatement创建,用于发送含有一个或多个参数的SQL语句。PreparedStatement对象比Statement对象的效率更高,并且可以防止SQL注入,所以我们一般都使用PreparedStatement。
CallableStatement:继承自PreparedStatement接口,由方法prepareCall创建,用于调用存储过程。
4.执行sql语句
常见Statement方法:
execute(String sql):运行语句,返回是否有结果集
executeQuery(String sql):运行select语句,返回ResultSet结果集。
executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数。
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
5.处理结果
这里分为更新表操作和查询表操作
更新表操作一般if(i>0){}来判断是否执行成功
查询表操作则用到ResultSet接口
ResultSet提供检索不同类型字段的方法,常用的有:
getString(int index)、getString(String columnName):获得在数据库里是varchar、char等类型的数据对象。
getFloat(int index)、getFloat(String columnName):获得在数据库里是Float类型的数据对象。
getDate(int index)、getDate(String columnName):获得在数据库里是Date类型的数据。
getBoolean(int index)、getBoolean(String columnName):获得在数据库里是Boolean类型的数据。
getObject(int index)、getObject(String columnName):获取在数据库里任意类型的数据。
6.关闭资源
使用后依次关闭对象及连接: Statement → Connection
下面是更新(增删改)的实例:
public class JdbcDemo{
public boolean Update(String name,String pwd)//参数类型{
String sql=" insert into tbuser(username,password) values(?,?)";
// String sql = "update tbuser set password=? where id=?";
// String sql=" delete from tbuser where id=?";
try {PreparedStatement ps = conn.prepareStatement(sql);
//这里根据自己sql语句定义相关方法
ps.setString(1, name);