1、jdbc是什么: Java Data Base Connectivity
![](https://img-blog.csdn.net/20141107191337681?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd29zaGlzaGFiaWFhYWFh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
String driver = "com.mysql.jdbc.Driver";//数据库驱动
String url = "jdbc:mysql://localhost:3306/**";//**指的是数据库名称
String username = "root";//数据库用户名
String password = "root";//数据库密码
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try{
Class.forName(driver);//加载数据库驱动
conn = DriverManager.getConnection(url,username,password);//连接Connection对象
stat = conn.createStatement();//创建Statement对象
String sql = "select userid,username,password from user";
rs = stat.executeQuery(sql);//执行sql语句返回结果集
while(rs.next()){
int userid = rs.getInt("userid");
String name = rs.getString("username");
String pwd = rs.getString("password");
System.out.println("id:"+userid+"\tname:"+name+"\tpassword:"+pwd);
}
} catch(ClassNotFoundException e){
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
} finally {
if(rs != null){
try{
rs.close();//关闭结果集rs
} catch(SQLException e){
e.printStackTrace();
} finally {
if(stat != null){
try{
stat.close();//关闭stat对象
} catch(SQLException e){
e.printStackTrace();
} finally {
if(conn != null){}
try{
conn.close();//关闭conn对象
} catch(SQLException e){
e.printStackTrace();
}
}
}
}
}
}
}
java语言访问数据库的一套接口; 也是调用者和实现者的一套协议, 数据库厂商开发自己的实现。
2、为什么会有jdbc:
- 没有jdbc以前
缺点: 1> 移植性差 、
2> 程序员要熟悉各个数据库的驱动
2> 程序员要熟悉各个数据库的驱动
- 有了jdbc:
3、jdbc的缺点:
- 代码失控:
public static void main(String[] args){
String url = "jdbc:mysql://localhost:3306/**";//**指的是数据库名称
String username = "root";//数据库用户名
String password = "root";//数据库密码
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try{
Class.forName(driver);//加载数据库驱动
conn = DriverManager.getConnection(url,username,password);//连接Connection对象
stat = conn.createStatement();//创建Statement对象
String sql = "select userid,username,password from user";
rs = stat.executeQuery(sql);//执行sql语句返回结果集
while(rs.next()){
int userid = rs.getInt("userid");
String name = rs.getString("username");
String pwd = rs.getString("password");
System.out.println("id:"+userid+"\tname:"+name+"\tpassword:"+pwd);
}
} catch(ClassNotFoundException e){
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
} finally {
if(rs != null){
try{
rs.close();//关闭结果集rs
} catch(SQLException e){
e.printStackTrace();
} finally {
if(stat != null){
try{
stat.close();//关闭stat对象
} catch(SQLException e){
e.printStackTrace();
} finally {
if(conn != null){}
try{
conn.close();//关闭conn对象
} catch(SQLException e){
e.printStackTrace();
}
}
}
}
}
}
}
- sql与java代码耦合
- 安全性: sql注入, 木有转义
- 持久层与业务层耦合