一、代码结构
二、JDBCFactory.java
packagecom.test;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;public classJDBCFactory {//定义静态属性
private staticString DRIVER;private staticString URL;private staticString USERNAME;private staticString PASSWORD;//静态代码块,用来加载资源文件中的信息,且只会加载一次
static{//1、加载数据配置文件(资源对象)
Properties pro=newProperties();//2、将资源读取成字节输入流
InputStream is=JDBCFactory.class.getResourceAsStream("jdbc.sqlserver.properties");try{//3、通过资源对象加载字节输入流
pro.load(is);//4、资源对象通过key来获取对应的文件中的value
DRIVER=pro.getProperty("jdbc.driver");
URL=pro.getProperty("jdbc.url");
USERNAME=pro.getProperty("jdbc.username");
PASSWORD=pro.getProperty("jdbc.password");
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}/**建立数据库连接的静态方法
*@return如果有异常,则会返回null*/
public staticConnection getConn(){
Connection ct=null;try{//1、加载驱动
Class.forName(DRIVER);//2、得到连接
ct=DriverManager.getConnection(URL,USERNAME,PASSWORD);
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}returnct;
}/*** 静态方法,用来关闭资源,注意关闭顺序,否则可能报错*/
public static voidcloseAll(Connection ct,Statement st,ResultSet rs){if(rs!=null){try{
rs.close();
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}if(st!=null){try{
st.close();
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}if(ct!=null){try{
ct.close();
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
三、jdbc.sqlserver.properties
jdbc.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc.url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb1
jdbc.username=sa
jdbc.password=m123
四、TestClass.java
packagecom.test;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Timestamp;public classTestClass {
Connection ct;
PreparedStatement ps=null;
ResultSet rs;public static voidmain(String[] args) {
TestClass tc=newTestClass();
tc.ct=JDBCFactory.getConn();
String sql="insert into student_table(stuname,stuage,stusex,stubirth,stusubj) values(?,?,?,?,?)";try{
tc.ps=tc.ct.prepareStatement(sql);
tc.ps.setString(1, "哈哈");
tc.ps.setInt(2, 20);
tc.ps.setString(3, "男");
tc.ps.setTimestamp(4, null);
tc.ps.setString(5, "呵呵");
tc.ps.executeUpdate();
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCFactory.closeAll(tc.ct, tc.ps,null);
}
}
}
五、说明
jbdc的常用API:
1.Connection:数据库的链接对象
2.statement:数据库sql执行对象
3.preparedStatment:sql的预编译处理对象,是statement子接口
4.resultset:返回查询的结果集
jdbc开发步骤:
1.在项目中加入驱动jar包
2.写jdbc链接代码
preparedStatment 预编译sql命令接口:
1.会对sql语句进行编译检查,可以用参数占位符的方式编写sql语句
2.作用:比普通statement接口执行效率更高。可以防止sql注入的侵入