jdbc:java database connectivity (java 数据库连接)
由一些接口和类构成的api,这写接口和类主要在java.sql 和javax.sql包中
jdbc数据库的步骤:
1.加载数据库驱动
java.lang.Class.forName(String className);.//根据完整类名,将类加载到jvm中
注:当前java版本可以省略此代码
2.建立数据库连接对象
Connection con = java.sql.DriverManager.getConnection(String url,String user,String password);
url:统一资源定位符,网络中的资源,比如图片、视频或者数据库资源都需要一个唯一的地址去定位
url协议:
协议名://主机名;端口号/资源的具体路径
jdbc的ul
jdbc:厂商名://ip地址:端口/数据库名
3.执行sql的语句对象
java.sql.Statement stmt = con.createStatement();
4.处理结果
int rs_num = stmt.executeUpdate(String sql);
ResultSet rs = stmt.executeQuery(String sql);
//executeUpdate可以执行insert update delete操作
返回int型用于表示该操作导致数据库表中影响了几行
//ResultSet next 判断结果集中的下一行有没有记录,如果没有返回false,如果有返回 true,并将光标指向下一行
elementType getElementType(int index) 根据索引取值
elementType getElementType(String colsName) 根据字段名取值
5.释放数据库资源
rs.close();
stmt.close();
con.close();
常见的数据库驱动加载方式:
mysql:
Class.forName("com.mysql.jdbc.Driver");
oracle:
Class.forName("oracle.jdbc.driver.Driver");
sql server 2008
Class.forName("com.mocrosoft.sqlserver.jdbc.SqlServerDriver");
java语言仅提供数据库标准
好处:1.java语言开发者不需要为所有的数据库提供实现,维护
2.java语言开发者只需要掌握标准,就可以操作所有类型的数据库
3.当应用程序从一个数据库切换到另外一个数据库时,只需要修改少量的代码,减少维护代码的难度
代码示例:
package com.qxp.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//数据库连接工具类
public class DbConnection {
private static Connection con = null;
static String url,user,password;
public DbConnection() {
// TODO Auto-generated constructor stub
}
public Connection getConn(){
try {
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
public static Connection getMysqlConn(){
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/company", "root", "root");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
}
package com.qxp.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
//测试插删改
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/company?user=root&password=root");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(conn);
try {
stmt = conn.createStatement();
String sql = "delete from dept where deptno=6";
String sql1 = "update dept set dname = '监察部' where deptno = 50";
String sql2 ="insert into dept values(6,'啦啦','honkong')";
int rwsss = stmt.executeUpdate(sql2);
int rws = stmt.executeUpdate(sql);
int rwss = stmt.executeUpdate(sql1);
if(rwsss>0){
System.out.println("插入操作执行成功");
}else{
System.out.println("插入操作执行失败");
}
if(rws>0){
System.out.println("删除操作执行成功");
}else{
System.out.println("删除操作执行失败");
}
if(rwss>0){
System.out.println("更新操作执行成功");
}else{
System.out.println("更新操作执行失败");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package com.qxp.test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.qxp.entity.Dept;
import com.qxp.jdbc.DbConnection;
public class Query {
//测试sql查询
public static void main(String[] args) {
Statement stmt = null;
Connection con = DbConnection.getMysqlConn();
try {
stmt = con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
String sql = "select * from dept";
ResultSet rs = null;
try {
rs = stmt.executeQuery(sql);
while(rs.next()){
Dept dept = new Dept(rs.getInt(1), rs.getString("dname"), rs.getString("loc"));
System.out.println(dept);
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(stmt!=null)
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(con!=null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package com.qxp.entity;
//实体类
public class Dept {
private int deptno;
private String dname;
private String loc;
public Dept(int deptno, String dname, String loc) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
@Override
public String toString() {
return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}