大家都知道,JDBC全称Java Data Base Connectivity,数据库连接,是一套Java连接数据库行业标准的API,能与关系型数据库建立联系,并执行相关操作,现流行的主流数据库如:Oracle,SqlServer,Mysql等等,都支持Sun的JDBC接口。作为一名学生,我用的最多的还是开源的Mysql,这里我就用Mysql为例谈谈JDBC。
JDBC的API主要的java.sql和javax.sql这两个包内,其中前者是JDBC的核心API,属于J2SE部分,后者是拓展的API,属于J2EE部分。
首先谈一下一般连接数据库的步骤:
1:加载JDBC驱动程序,并获取连接。加载之前,需要导入mysql-connector-java-5.1.18-bin.jar的jar包。在我的程序中连接是在getConnection函数中,Class.forName加载驱动,加载时,驱动会自动向DriveManager完成注册,紧接着就是试图建立到给定数据库 URL 的连接,其实在这里加载驱动的Class.forName可以省略掉。JDBC URL的语法格式:jdbc:<protocol>//<databasename>,其中protocol是数据库连接协议,databasename是数据库连接地址,若建立好连接,返回信息存储在Connection对象中。
2:通过Connection连接对象创建Statement(PreparedStatement)对象,再通过Statement对象执行相关的数据库操作。操作数据库sql语句一般会有两种情况,一种是执行影响到数据库的记录,如insert,delete,update(数据库称这种为DML语句),即影响到数据库记录并执行数据库无返回的sql语句,一般用executeUpdate执行,另一种是
- 执行查询返回ResultSet对象的,一般是静态的select语句。
-
- 附上一个demo供大家学习。
- 在这个例子中,有insert插入函数,delete删除函数和query查询函数,每个函数执行前都要连接数据库,即getConnection函数,在mysql里面已经有一个名为crud的数据库,里面有张student的数据表,属性已经写好并已写入id为2,3的两行;
-
连接好数据库后,根据不同的sql语句执行Statement对象,每次执行完一次操作之后关闭连接,
-
-
import java.sql.*;
public class JDBC {
static Connection con=null;
static Statement stmt=null;
public static void main(String args[])
{
insert();
delete();
query();
}
public static void query()
{
con=getconnection();
try{
String sql = "select * from student";
stmt = (Statement)con.createStatement();//创建操作SQL 的语句对象
ResultSet rs =stmt.executeQuery(sql);
while(rs.next())
{
String id=rs.getString("id");
String name=rs.getString("name");
String classes=rs.getString("classes");
String score=rs.getString("score");
System.out.println(id+","+name+","+classes+","+score);
}
}catch(SQLException e)
{
System.out.println("查询失败");
}
}
public static Connection getconnection()
{
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/crud", "root", "admin");
}
catch(Exception e){
System.out.print("数据库连接失败:"+e.getMessage());
}
return con;
}
public static void insert()
{
con=getconnection();
try{
String sql1 = "INSERT INTO student(id, name,classes,score) VALUES ('1','李四', '三年级', '100')";
stmt = (Statement)con.createStatement();//创建执行SQL语句的Statement对象
stmt.executeUpdate(sql1);
con.close();
}catch(SQLException e)
{
System.out.println("插入数据失败"+e.getMessage());
}
}
public static void delete()
{
con=getconnection();
try{
String sql="delete from student where id='1'";
stmt = (Statement)con.createStatement();
stmt.executeUpdate(sql);
con.close();
}
catch(SQLException e){
System.out.println("删除数据出错"+e.getMessage());
}
}
}