JDBC操作步骤
程序 --> 加载驱动 --> 数据库连接 --> 数据库操作指令 --> 关闭
指定的连接地址 例,SQL指定 释放资源
|
classpath指定
|
-->classpath - 指定 ->驱动程序
连接数据库
配置MySql数据库的驱动程序
使用MySql数据库进行开发,则必须将MySql数据库程序配置到CLASSPATH ,没有的话自己新建一个“用户变量”,如:
变量名:CLASSPATH
变量值:.;d:\MySQL\mysql-connector-java-5.1.13-bin.jar;
内容与内容之前用“;”分割。
加载驱动程序
加载驱动程序是JDBC操作的第一步。MySQL中的数据库驱动程序路径是org.gjt.mm.mysql.Driver。
例:加载驱动程序
public class ConnectionDemo {
//定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
public static void main(String args[]){
try{
Class.forName(DBDRIVER) ; //加载驱动程序
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
}
}
如果以上程序可以正常运行,则驱动程序已经配置成功。
配置出错时的解决!
如果配置时出现了以下的错误提示:
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
则肯定是CLASSPATH设置有问题。
如果在CLASSPATH设置上搞不清楚,那就直接在eclipse中直接导入包操作:
在项目文件中有个src文件夹,右击 Build Path --> Configure Build Path --> Libraries --> Add External JARs... --> 找到d:\MySQL\mysql-connector-java-5.1.13-bin.jar
之后再运行程序,如果不知道是否正确则可在try语句中加一个打印出“OK” ,有的话就加载成功了。
连接及关闭数据库
使用DriverManager类连接数据库。
DriverManager类的常用方法
通过连接地址连接数据库
public static Connection getConnection(String url)
throws SQLException
通过连接地址连接数据库,同时输入用户名和密码
public static Connection getConnection(String url,
String user,
String password)
throws SQLException
MySQL数据库的连接地址格式
jdbc:mysql://IP地址:端口号/数据库名称
现在本机上存在一个mldn的数据库,此时的地址为jdbc:mysql://localhost:3306/mldn
提示:数据库连接地址的形式
JDBC虽然提供了与平台无关的数据库操作,但各个数据库的连接地址是有差异的,JDBC的连接地址实际上由以下3个部分组成。
--> jdbc协议:JDBC URL 中的协议总是jdbc 。
--> 子协议:驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称,如mysql。
--> 子名称:一种标识数据库的方法。必须遵循“//主机名:端口/子协议”的标准URL命名约定,如//localhost:3306/mldn。
Connection类
例:连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionDemo02 {
//定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
//MySQL数据库的连接用户名
public static final String DBUSER = "root" ;
//MySQL数据库的连接密码
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[]){
Connection conn = null ; //数据库连接
try{
Class.forName(DBDRIVER) ; //加载驱动程序
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
try{
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
}catch(SQLException e){
e.printStackTrace() ;
}
System.out.println(conn);
try{
conn.close() ; //数据库关闭
}catch(SQLException e){
e.printStackTrace() ;
}
}
}
输出:
com.mysql.jdbc.JDBC4Connection@1891d8f
程序的运行结果不为空,说明此时数据库已经连接成功。
若此时运行结果发生异常,则检查一下MySQL的服务项有没有开启。
注意:数据库打开之后必须关闭。
执行数据库的更新操作
对数据库进行操作时,要用到Statement接口完成,此接口可以使用Connection接口中提供的createStatement()方法实例化。
下面使用Statement接口分别完成数据库的插入、修改、删除操作。
实例一 执行数据库插入操作
下面直接向user表中增加一条新的记录,编写一条完整的SQL语句,并通过Statement执行。
例:插入数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class InsertDemo {
//定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
//MySQL数据库的连接用户名
public static final String DBUSER = "root" ;
//MySQL数据库的连接密码
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[])throws Exception{
Connection conn = null ; //数据库连接
Statement stmt = null ; //数据库操作
String sql = "INSERT INTO user(name,password,age,sex,birthday) "
+ " VALUES ('李华','www.baidu.cn',30,'男','2020-1-23')";
Class.forName(DBDRIVER) ; //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ; //实例化Statement对象
stmt.executeUpdate(sql) ; //执行数据库更新操作
stmt.close() ; //操作关闭
conn.close() ; //数据库关闭
}
}
提示:在数据库中更新操作结束后,用SELECT * FROM user ;来查看是否已做修改。
重要:在程序中的SQL语句中的数据是固定的,如果将全部的内容换成变量,则可以按照以下的代码编写:
Statement stmt = null ; //数据库操作
String name = "李敏" ; //姓名
String password = "www.baidu.cn" ; //密码
int age = 23 ; //年龄
String sex = "女" ; //性别
String birthday = "2003-08-23" ; //生日
String sql = " INSERT INTO user(name,password,age,sex,birthday) "
+ " VALUES ('" + name + "','" + password + "'," + age + ",'" + sex + "','" + birthday + "') "; //拼凑出一个完整的SQL语句
实例二 执行数据库修改
修改语句 --> UPDATE
例:数据库修改操作
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class UpdateDemo {
//定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
//MySQL数据库的连接用户名
public static final String DBUSER = "root" ;
//MySQL数据库的连接密码
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[])throws Exception{
Connection conn = null ; //数据库连接
Statement stmt = null ; //数据库操作
int id = 3 ; //id
String name = "李洛克" ; //姓名
String password = "www.mldn.cn" ; //密码
int age = 23 ; //年龄
String sex = "男" ; //性别
String birthday = "2001-08-23" ;//生日
String sql = " UPDATE user SET name='"+ name + "',password='" + password
+ "',age=" + age + ",sex='"+ sex + "',birthday='"
+ birthday+ "' WHERE id=" + id ;//拼凑出一个完整的SQL语句
Class.forName(DBDRIVER) ; //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ; //实例化Statement对象
stmt.executeUpdate(sql) ; //执行数据库更新操作
stmt.close() ; //操作关闭
conn.close() ; //数据库关闭
}
}
实例三 执行数据库删除操作
例:按id删除一条记录
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class DeleteDemo {
//定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
//MySQL数据库的连接用户名
public static final String DBUSER = "root" ;
//MySQL数据库的连接密码
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[])throws Exception{
Connection conn = null ; //数据库连接
Statement stmt = null ; //数据库操作
int id = 3 ; //id
String sql = "DELETE FROM user WHERE id=" + id;//拼凑出一个完整的SQL语句
Class.forName(DBDRIVER) ; //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ; //实例化Statement对象
stmt.executeUpdate(sql) ; //执行数据库更新操作
stmt.close() ; //操作关闭
conn.close() ; //数据库关闭
}
}