JDBC连接MySql数据库步骤以及查询、插入、删除、更新等

更新时间:2023-06-08 20:12:57 阅读: 评论:0

JDBC连接MySql数据库步骤以及查询、插⼊、删除、更新等
主要内容:
JDBC连接数据库步骤。
⼀个简单详细的查询数据的例⼦。
封装连接数据库,释放数据库连接⽅法。
实现查询,插⼊,删除,更新等⼗⼀个处理数据库信息的功能。(包括事务处理,批量更新等)
把⼗⼀个功能都放在⼀起。
安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(这本该是第⼀步,但是由于属于安装类,所以我们放在最后)
⼀.JDBC连接数据库(编辑)步骤(主要有六个步骤)
1.注册驱动: Class.forName("sql.jdbc.Driver");显⽰的加载到JVM中
2.获取连接:(1) param1:  要连接数据库的url-----》 String url="jdbc:mysql://localhost:3306/test?"+ "uUnicode=true&characterEncoding=UTF8";//防⽌乱码
param2:要连接数据库的⽤户名--》 String ur="h4";
param3:要连接数据库的密码----》 String pass="111";
Connection Connection(url,ur,pass);//DriverManager下的⽅法:getConnection(String url,String urname,String password)
(2)接下来我们分析下url:"jdbc(这是协议以jdbc开头):mysql(这是⼦协议,数据库管理系统名称)://localhost(数据库来源地址):3306(⽬标端⼝)/test(要查询的表)?"
"uUnicode=true&characterEncoding=UTF8";添加这个是为了防⽌乱码,指定使⽤Unicode字符集,且使⽤UTF-8来编辑。
3.创建⼀个Statement语句对象(主要三种⽅法): Statement ateStatement();//Connection接⼝下的⽅法:Statement createStatement()
PreparedStatement pstmt = conn.PreparedStatement() ;
CallableStatement cstmt =  conn.prepareCall("{CALL demoSp(? , ?)}") ;
下⾯我们来分析下他们:(1) Statement与 PreparedStatement对象的区别,后者可以动态设置查询参数
(2)设置参数的⽅法 PreparedStatement.tXXXX(parameterIndex,value),如果数据库参数类型是varchar 则⽤tString,如果参数类型是Integer 则⽤tInt
(3)CallableStatement.tXXXX(parameterIndex,value)  //按照参数的顺序设置value
CallableStatement.tXXXX(parameterName,value)  //按照参数的名字来设置value,这个名字是在定义存储过程的时候的形式参数的名字
(isterOutParameter⽅法⽤于声明⼀个存储过程输出类型的参数,⽤以接收存储过程的输出值
4.执⾏SQL语句: ResultSet uteQuery(Sql);除了查询语句是executeQuery();其他全部是executeUpdate();
Statement接⼝下的⽅法:
boolean execute(String sql):执⾏SQL语句,如果返回值是结果集则为true,否则为fal
ResultSet  executeQuery(String sql):执⾏SQL语句,返回值为ResultSet
int executeUpdate(String sql):执⾏SQL语句,返回值为所影响的⾏数
5.处理结果集:ResultSet对象的getXxxx⽅法,取决于数据库中表的字段的类型,例如:varchar2  对应⽅法是getString ,如果是 integer 对应⽅法是getInt/getLong
()){
ResultSet接⼝下常见的⽅法:beforeFirst();将游标移动到ResultSet中第⼀条记录(的前⾯)
afterLast();将游标移动到ResultSet中最后⼀条记录(的后⾯)
absolute(intcolumn):将游标移动到相对于第⼀⾏的指定⾏,负数则为相对于最后⼀条记录
previous():将游标上移⼀⾏
next():将游标下移⼀⾏
ResultSet.TYPE_SCROLL_SENSITIVE    结果集可以滚动
ResultSet.CONCUR_READ_ONLY  结果集只读,不能修改
6.关闭资源:操作完以后要关闭jdbc来释放jdbc资源。但是顺序要和你定义对象的时候相反,就像关门⼀样,从⾥⾯先关,⼀直往外关。
如下⽰例:
if(rs !=null){//1.关闭结果集
try{
rs.clo();
} catch (SQLException e){
e.printStackTrace();
}
}
if(stmt !=null){//2.关闭声明的对象
try{
stmt.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn !=null){//3.关闭连接(记住⼀定要先关闭前⾯的1.2.然后在关闭连接)
try{
conn.clo();
}catch(Exception e){
e.printStackTrace();
}
}
⼆.下⾯是⼀个简单的(详细的)查询数据的例⼦
package javacore1;//这是你建的⼀个包名。
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;    //左边这五个是你在写程序时要导⼊的包名,记住是要在java.sql下的包。
import java.sql.SQLException;
import java.sql.Statement;
public class jdbc { //定义⼀个类
public static void main(String[] args){ //主⽅法
try{
String driver="sql.jdbc.Driver";      //1.定义驱动程序名为driver内容为sql.jdbc.Driver
String url="jdbc:mysql://localhost:3306/test?"  //2.定义url;jdbc是协议;mysql是⼦协议:表⽰数据库系统管理名称;localhost:3306是你数据库来源的地址和⽬标端⼝;test是我本⼈建的表位置所在处,你以你的为标准。        + "uUnicode=true&characterEncoding=UTF8"; //防⽌乱码;uUnicode=true表⽰使⽤Unicode字符集;characterEncoding=UTF8表⽰使⽤UTF-8来编辑的。
String ur="h4";                  //3.定义⽤户名,写你想要连接到的⽤户。
String pass="111";                //4.⽤户密码。
String querySql="lect * from employees";    //5.你想要查找的表名。
Class.forName(driver);              //6.注册驱动程序,⽤java.lang包下⾯的class类⾥⾯的Class.froName();⽅法此处的driver就是1⾥⾯定义的driver,也可以 Class.forName("sql.jdbc.Driver");
Connection Connection(url,ur,pass);//7.获取数据库连接,使⽤java.sql⾥⾯的DriverManager的getConnectin(String url , String urname ,String password )来完成
//括号⾥⾯的url,ur,pass便是前⾯定义的2,3,4步骤内容;
Statement ateStatement();  //8.构造⼀个statement对象来执⾏sql语句:主要有Statement,PreparedStatement,CallableStatement三种实例来实现
//  三种实现⽅法分别为:Statement stmt = ateStatement() ;
//          PreparedStatement pstmt = conn.prepareStatement(sql) ;
//          CallableStatement cstmt = conn.prepareCall("{CALL demoSp(? , ?)}") ;
ResultSet uteQuery(querySql);//9.执⾏sql并返还结束;ResultSet executeQuery(String sqlString):⽤于返还⼀个结果集(ResultSet)对象。
()){  //10.遍历结果集
System.out.println("⼈员编号:"+rs.getString("employee_id")+"⼯资:"+rs.getString("salary")+"姓名:"+rs.getString("last_name"));//使⽤getString()⽅法获取你表⾥的资料名      }
if(rs !=null){//11.关闭记录集
try{
rs.clo();
} catch (SQLException e){
e.printStackTrace();
}
}
if(stmt !=null){//12.关闭声明的对象
try{
stmt.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn !=null){//13.关闭连接(记住⼀定要先关闭前⾯的11.12.然后在关闭连接,就像关门⼀样,先关⾥⾯的,最后关最外⾯的)
try{
conn.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
三.为了更加直观,我们把获取数据库连接和释放连接封装在⽅法⾥,以便于后⾯更好的操作
package javacore1;
import java.sql.Connection;
import java.sql.DriverManager;
public class jdbc{
public static void main(String[] args){
Connection conn= getConnection("h4", "111"); //获取数据库连接
/*,,,,此处为⽅法名来获取连接,例如 query(conn),,,,,*/
releaConnection(conn); // 释放数据库连接
}绯闻少女第四季
/*,,,,,,,,,,此处构建⼀个你想要的功能的⽅法,,,,,,,,,,,,*/
//数据库连接
2016年考研英语答案public static Connection getConnection(String ur, String pass) {
Connection conn = null;//声明连接对象
String driver = "sql.jdbc.Driver";// 驱动程序类名
String url = "jdbc:mysql://localhost:3306/test?" // 数据库URL
+ "uUnicode=true&characterEncoding=UTF8";// 防⽌乱码
try {
Class.forName(driver);// 注册(加载)驱动程序
conn = Connection(url, ur, pass);// 获取数据库连接
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/
/ 释放数据库连接
public static void releaConnection(Connection conn) {
try {
if (conn != null)
conn.clo();
} catch (Exception e) {
e.printStackTrace();
}
}
}
四.实现查询、插⼊、删除、更新等⼗⼀个处理数据库信息的功能
1.查询数据
package javacore1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Query {
public static void main(String[] args) {
Connection conn = getConnection("h4", "111");// 获取数据库连接
query(conn);  //⽅法名调⽤数据库连接
releaConnection(conn);//释放数据库连接
}
//查询数据,定义的query⽅法
public static void query(Connection conn){
String Sql="lect * from employees";
try{
Statement ateStatement(); //也可以使⽤PreparedStatement来做
ResultSet uteQuery(Sql);//执⾏sql语句并返还结束
()){//遍历结果集,向下⼀⾏
System.out.println("⼈员编号:"+rs.getString("employee_id")+"⼯资:"+rs.getString("salary"));
}
if(rs !=null){
try{
rs.clo();
} catch (SQLException e){
}
}
if(stmt !=null){
try{
stmt.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn !=null){
try{
conn.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
//数据库连接
public static Connection getConnection(String ur, String pass) {
Connection conn = null;//声明连接对象
String driver = "sql.jdbc.Driver";// 驱动程序类名
perphoneString url = "jdbc:mysql://localhost:3306/test?" // 数据库URL
+ "uUnicode=true&characterEncoding=UTF8";// 防⽌乱码
try {
Class.forName(driver);// 注册(加载)驱动程序
conn = Connection(url, ur, pass);// 获取数据库连接
} catch (Exception e) {
银河护卫队彩蛋e.printStackTrace();
}
return conn;
}
//释放数据库连接
public static void releaConnection(Connection conn) {
try {
if (conn != null)
conn.clo();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//查询数据,结果倒着显⽰,倒序
package javacore1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Query {s cute
public static void main(String[] args) {
Connection conn = getConnection("h4", "111");// 获取数据库连接
query(conn);  //⽅法名调⽤数据库连接
releaConnection(conn);//释放数据库连接
}
//查询数据,定义的query⽅法
public static void query(Connection conn){
String Sql="lect * from employees";
try{
Statement ateStatement(); //也可以使⽤PreparedStatement来做
ResultSet uteQuery(Sql);//执⾏sql语句并返还结束
rs.afterLast();  //先跳到最后⼀⾏
while(rs.previous()){//遍历结果集,向上⼀⾏
System.out.println("⼈员编号:"+rs.getString("employee_id")+"⼯资:"+rs.getString("salary"));      }
if(rs !=null){
try{
rs.clo();
} catch (SQLException e){
e.printStackTrace();
}
}
if(stmt !=null){
try{
stmt.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn !=null){
try{
conn.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
//数据库连接
public static Connection getConnection(String ur, String pass) {
Connection conn = null;//声明连接对象
String driver = "sql.jdbc.Driver";// 驱动程序类名
String url = "jdbc:mysql://localhost:3306/test?" // 数据库URL
+ "uUnicode=true&characterEncoding=UTF8";// 防⽌乱码
try {
Class.forName(driver);// 注册(加载)驱动程序
conn = Connection(url, ur, pass);// 获取数据库连接
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//释放数据库连接
public static void releaConnection(Connection conn) {
try {
if (conn != null)
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.插⼊数据
package javacore1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Inrt {
public static void main(String[] args) {
Connection conn = getConnection("h3", "111111");  // 获取数据库连接
inrt(conn);  //⽅法名调⽤数据库连接
releaConnection(conn);// 释放数据库连接
}
//插⼊数据
public static void inrt(Connection conn) {
try {
String sql = "inrt into employees(employee_id,last_name,salary,department_id,urid)"            + " values ('100010', 'xiaogou', '7000','004','9')"; // 插⼊数据的sql语句
Statement stmt1 =ateStatement();  // 创建⽤于执⾏静态sql语句的Statement对象        int count = uteUpdate(sql); // 执⾏插⼊操作的sql语句,并返回插⼊数据的个数        System.out.println("向biao中插⼊了 " + count + " 条数据"); //输出插⼊操作的处理结果
conn.clo();  //关闭数据库连接
} catch (SQLException e) {
e.printStackTrace();
}
}
//数据库连接
public static Connection getConnection(String ur, String pass) {
Connection conn = null;//声明连接对象
String driver = "sql.jdbc.Driver";// 驱动程序类名
String url = "jdbc:mysql://localhost:3306/test?" // 数据库URL
+ "uUnicode=true&characterEncoding=UTF8";// 防⽌乱码
try {
mcafee是什么
Class.forName(driver);// 注册(加载)驱动程序
conn = Connection(url, ur, pass);// 获取数据库连接
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//释放数据库连接
public static void releaConnection(Connection conn) {
try {
if (conn != null)
conn.clo();
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.删除数据
package javacore1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
freakyfriday
import java.sql.Statement;
public class Delete {
public static void main(String[] args) {
Connection conn = getConnection("h3", "111111");  // 获取数据库连接
delete(conn);  //⽅法名调⽤数据库连接;
keeleyreleaConnection(conn);// 释放数据库连接
}
//删除数据
public static void delete(Connection conn){lunik
String Sql = "delete from employees where employee_id=100009";
try {
Statement stmt = ateStatement();// 或者⽤PreparedStatement⽅法
if (stmt != null) {
try {
stmt.clo();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//数据库连接
public static Connection getConnection(String ur, String pass) {
梵文在线翻译Connection conn = null;//声明连接对象
String driver = "sql.jdbc.Driver";// 驱动程序类名
String url = "jdbc:mysql://localhost:3306/test?" // 数据库URL
+ "uUnicode=true&characterEncoding=UTF8";// 防⽌乱码
try {
Class.forName(driver);// 注册(加载)驱动程序
conn = Connection(url, ur, pass);// 获取数据库连接
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/
/ 释放数据库连接
public static void releaConnection(Connection conn) {
try {
if (conn != null)
conn.clo();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.更新数据
package javacore1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Update {
public static void main(String[] args) {
Connection conn = getConnection("h3", "111111");  // 获取数据库连接
update(conn);  //⽅法名调⽤数据库连接
releaConnection(conn);// 释放数据库连接
}
/
/更新数据
public static void update(Connection conn){
String Sql = "update employees t salary=8000 where employee_id=100005";
try {
Statement stmt1 = ateStatement();//或者⽤PreparedStatement⽅法
if (stmt1 != null) {
try {
stmt1.clo();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//数据库连接
public static Connection getConnection(String ur, String pass) {
Connection conn = null;//声明连接对象
String driver = "sql.jdbc.Driver";// 驱动程序类名
String url = "jdbc:mysql://localhost:3306/test?" // 数据库URL
+ "uUnicode=true&characterEncoding=UTF8";// 防⽌乱码
try {
Class.forName(driver);// 注册(加载)驱动程序
conn = Connection(url, ur, pass);// 获取数据库连接
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
// 释放数据库连接
public static void releaConnection(Connection conn) {
try {
if (conn != null)
conn.clo();
} catch (Exception e) {
e.printStackTrace();
}
}
}
5.转账(事物处理)
JDBC处理事务通过关闭连接的⾃动提交实现的:
Connection.tAutoCommit(fal);
提交事务:
回滚事务
回滚部分:
全部回滚:
package javacore1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class TransCash {
public static void main(String[] args) {
Connection conn = getConnection("h3", "111111");// 获取数据库连接
transCash(conn);  //⽅法名调⽤数据库连接
releaConnection(conn);// 释放数据库连接
}
//转账(数据调换)(原来数据为100和500,实现这个功能后变成500和100,其实说⽩了就是更新数据,改数据) public static void transCash(Connection conn){
Statement stmt = null;
try{
conn.tAutoCommit(fal);//关闭⾃动提交
String sql = "update employees t salary=500 where employee_id=100001";
stmt = ateStatement();
sql = "update employees t salary=100 where employee_id=100002";
//int i=1/0;如果这样,那么将不可以完成任务,因为这是⼀个完整的事物,有⼀点失败,将全部失败
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt != null){ stmt.clo();
}catch(Exception e){
e.printStackTrace();
}
}
}
//数据库连接
public static Connection getConnection(String ur, String pass) {
Connection conn = null;//声明连接对象
String driver = "sql.jdbc.Driver";// 驱动程序类名
String url = "jdbc:mysql://localhost:3306/test?" // 数据库URL

本文发布于:2023-06-08 20:12:57,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/905242.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:连接   数据库   获取   数据   驱动程序   对象   释放
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图