JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API
JAVA SE的一部分,由java.sql,javax.sql包组成。
jdbc驱动分类
①jdbc-odbc桥连接
②本地协议纯java驱动程序(也能实现网络开发)
③网络协议纯java驱动程序
④本地API
jdbc不足
尽管jdbc在java语言层面实现了统一,但不同数据库仍旧有许多差异。为了更好地实现跨数据库操作,于是诞生了Hibernate项目,它是对jdbc的再封装,实现了对数据库操作更宽泛的统一和更好地可移植性。
一、使用jdbc-odbc桥接方式操作数据库
1.配置数据源 开始-面板-管理工具-数据源-odbc数据源管理器-用户dsn-添加
2.在程序中去连接数据源
Connection ct=null;
Statement sm=null;
try {
//1.加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到连接[指定连接到那个数据源,用户和密码]
ct=DriverManager.getConnection("jdbc:odbc:学生信息","sa","123456");
//3.创建Statement或者PreparedStatement[区别]
//Statement用处是:主要用于发送sql语句,得到数据库
sm=ct.createStatement();
//4.执行(crud,创建数据库,备份数据库,删除数据...)
//exectueUpdate可以执行cud操作(添加,删除,修改)
int i=sm.executeUpdate("insert into StudentInfo values('1','1','1','1')");
if(i==1)
{
System.out.println("添加ok");
}
else
{
System.out.println("添加error");
}
//ResultSet结果集,大家把它可以理解一个表行的结果集
ResultSet rs=sm.executeQuery("select* from StudentInfo");
//因为rs指向结果集的第一行的前一行
//循环取出
while(rs.next())
{
String stuID=rs.getString(1);
String name=rs.getString(2);
String sex=rs.getString(3);
String specialy=rs.getString(4);
System.out.println(stuID+" "+name+" "+sex+""+specialy );
}catch (Exception e) {
// TODO: handle exception
}finally
{
//关闭资源
//关闭资源顺序是,谁后创建,则先关闭
try {
//为了程序健壮性
if(sm!=null){
sm.close();
}
if(ct!=null){
ct.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PreparedStatement 可以提高执行效率(因为它有预编译的功能)
PreparedStatement 可以防止sql注入,但是要求用?赋值的方式才可以。
命令:netstat -an
功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。
二、jdbc方式去操作数据库
需要引入jar包,这里连接sqlserver2008引入sqljdbc4.jar包
Connection cn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
cn=DriverManager.getConnection("jdbc:sqlserver://192.168.1.101:1433;databaseName=StuManaget","sa","123456");
ps=cn.prepareStatement("select *from StudentInfo");
rs=ps.executeQuery();
while(rs.next())
{
String id=rs.getString(1);
String id1=rs.getString(2);
String id2=rs.getString(3);
String id3=rs.getString(4);
System.out.println(id+" "+id1+" "+id2+" "+id3);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(cn!=null)
{
cn.close();
}
}