JDBC:Java数据库连接。
一、JDBC驱动程序
1、相应的数据库都有自己的JDBC驱动程序,很多都可以在相应网站上可以下载相应的jar包。在Web项目中安装JDBC驱动程序非常简单,只需要将相应的数据库驱动程序的Jar包拷贝到Web项目的WEB-INF目录下的lib目录下就可以了。安装完成后,就可以在该项目中使用JDBC驱动程序中的相应类和方法来进行数据库连接和CRUD操作。
2、加载JDBC驱动:
JDBC与数据库建立连接之前必须加载适当的驱动程序。一般使用Class的forName()方法来加载驱动程序。其中Mysql的驱动程序类为com.mysql.jdbc包下的Driver.class.所以,可以使用
Class.forName("com.mysql.jdbc.Driver");
来加载Mysql的驱动程序。或者使用
String Driver=null;
if(Driver!=null){
System.setProperty("com.mysql.jdbc.Drivers", Driver);
}
其他数据库同理。
二、JDBC连接数据库:JDBC连接数据库只需使用DriverManager类的getConnection()方法来创建一个Connection对象即可。但需给定连接的URL。其中连接的URl的语法格式为:
主要通讯协议:次要通讯协议://数据来源
其中,Mysql数据库的URL格式为:
jdbc.mysql://localhost[:端口号(默认3306)]/数据库名称[?参数1=参数值1&参数2=参数值2]
为了程序的通用性和灵活性,很多时候用一个资源文件来保存这些参数。
例:用OracleDB.properties来保存相关信息。
db.driver=oracle.jdbc.driver.OracleDriver
db.protocol=jdbc:oracle:thin:@localhost:1521:
db.database=Demo
db.username=scott
db.password=tigger
此时,我们现在程序要连接的是MSSQL,只需保存相应的参数信息到MSSQLDB.properties
db.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver db.protocol=jdbc:microsoft:sqlserver://127.0.0.1:1433
db.database=db_Job
db.username=sa db.password=
只需在数据库连接类中修改FileInputStream构造函数的参数为相应的资源文件。
FileInputStream in=new FileInputStream("MSSQLDB.properties");
即可。
三、JDBC的CRUD操作:
数据库连接完成后,就可以对数据库进行CRUD操作了。这里要用到驱动程序包中的类:语句对象Statement。可以通过调用Connection对象的createStatement()方法来获创建并获取Statement对象,然后用Statement对象调用相应方法来执行SQL语句。
1、如果是增加记录、更新记录、删除记录,就调用Statement对象的executeUpdate(String sql)来执行sql.
2、如果是执行查询。则需要调用Statement对象的executeQuery(String sql)来执行查询。并将查询结果返回给一个ResultSet对象。ResultSet对象包含了所有查询得到了记录。可以通过ResultSet对象的next()方法来获取一条记录,同时光标将指向下一条记录。对于一条记录中的字段可以调用ResultSet对象的getXXX(int index)方法获取。XXX为相应字段的数据类型。比如字段id类型为int类型,是第一个查询字段,name为String类型,为第二个查询字段。就可以使用下面的语句来获取
int id=resultsetObj.getInt(1); String name=resultsetObj.getString(2);
同理、多条记录可以用循环来完成:
ResultSet rs=stat.executeQuery(selcetsql);
if(rs.next())
{
System.out.println(rs.getString(1));
}
四、JDBC的资源关闭:
不管是数据库连接对象,流对象,Statement对象和ResultSet对象。都会占用系统资源。我们在访问后,不需要相应的对象时就应该将相应对象进行关闭,释放资源。这里都可以调用close()方法即可。例:statObj.close();rs.close();conn.close();
五、JDBC的预处理语句对象PreparedStatement:对于SQL语句中需要带参数的,我们需要使用JDBC给我们的预处理语句对象PreparedStatement对象来操作SQL中的参数。PreparedStatement接口继承了Statement接口,所以他能够实现Statement的所有功能,但比Statemen更加灵活。PreparedStatement中的SQl语句可以接受一个或多个参数,这些参数值都用"?"来再SQL中代替,在执行SQL钱,必须通过PreparedStatement对象的setXXX()方法来为参数赋值。这里setXXX()方法中的XXX表示类型,方法有两个参数,第一个是int类型,表示SQL中的第几个"?",第二个是对应XXX类型的常量值。
例:String sql="insert into user(userid,username,password) values(null,?,?)";
这里的后面两个值需要在执行SQL之前用PreparedStatement对象的方法来赋值。所以有:
PreparedStatement pstmt=conn.preparedStatement(sql);
//设置参数值
pstmt.setString(1,"WANG");
pstmt.setString(2,"passwd");
//执行SQL
pstmt.executeUpdate();
是查询则是
pstmt.executeQuery();
注:sql:select * from user limit 1,3;表示起始位置为第二条记录,一共查询三条记录。
这样,我们写的数据库连接类就具有通用性。