📄 basedao.java
字号:
package www.mary.database;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//
public class BaseDAO implements DBsource{
//设置全局性变量,以便后面的程序好调用
static Connection conn=null; //连接
static Statement st=null; //状态
static ResultSet rs=null; //结果集合
static PreparedStatement ps=null;
static CallableStatement cs=null;
//对数据库操作:
//1,注入驱动,
//2,建立连接
//3,开辟状态通道
//4,得到结果集合
public BaseDAO(){
try {
Class.forName(DriverName).newInstance(); //注入驱动
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//-----------------------------------------------------------------------------
//2,建立数据库连接,
public static void getConn(){
try {
conn=DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
e.printStackTrace();
}
}
//-----------------------------------------------------------------------------
//3,建立状态通道。
public static void getStatment(){
try {
st=conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void GetStatement(){
try{
if(conn==null||conn.isClosed()){
getConn();
}
st=conn.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}
//-----------------------------------------------------------------------------
//A:建立一个通用的查询方法
public static ResultSet executeQuery(String sql){
GetStatement(); //注意这里的建立状态通道不必再生成Basedao实例,因为他是static类型的方法,不依赖于实例就可以使用
try {
rs=st.executeQuery(sql);//传递sql语句,得到查询的结果集合
} catch (SQLException e) {
e.printStackTrace();
}
/** ---这里犯了各错误,大家可以试验以下,结果集要是在这里关闭了,那么我们后续掉查询方法
* 会出错
finally{
Close(); //关闭资源
}
*
*/
return rs;
}
// -----------------------------------------------------------------------------
//关闭使用的资源
public static void Close(){
try{
if(rs!=null)rs.close(); //如果结果集没关,就先关他
if(st!=null)st.close(); //再关闭状态通道
if(conn!=null)conn.close(); //再关闭连接
}catch(Exception e){
e.printStackTrace();
}
}
//-----------------------------------------------------------------------------
//Resultst里不单单方的是记录,而且还可以得到查询这个表字段的所有的详细信息:rmd=rs.getMatedata
//也就是rmd中得到了所查询字段的所有详细信息
// public static void query2()
// {
// TestDatabase testdatabase=new TestDatabase();
// String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=new"; //1,建立连接的路径
// try {
// Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();//2,注入sqlserver驱动,并生成一个实例
// Connection conn = DriverManager.getConnection(url, "sa", ""); //3,建立数据库连接
// Statement st=conn.createStatement(); //4,开辟连接通道
// ResultSet rs=st.executeQuery("select * from dept where 1=1"); //5,传递sql语句到状态通道,在数据库里查询,并返回结果集到ResultSet!
//
// ResultSetMetaData rmd=rs.getMetaData(); //得到所查询表里字段的所有详细信息
// int sumcount=rmd.getColumnCount(); //得到表里字段的个数
// for(int i=1;i<sumcount;i++)
// {
// String columnname=rmd.getColumnName(i); //得到字段的名称
// String columntype=rmd.getColumnTypeName(i); //得到字段的类型名称
// int columnscale=rmd.getScale(i); //得到字段的精确度
// int columnlength=rmd.getColumnDisplaySize(i); //得到长度
// System.out.println(columnname+"---"+columntype+"---"+columnscale+"---"+columnlength);
// }
// rs.close(); //关闭通道,节省资源
// st.close();
// conn.close();
//
// }
// catch (ClassNotFoundException ex) {
// }
// catch (IllegalAccessException ex) {
// }
// catch (InstantiationException ex) {
// } catch (SQLException ex1) {
// }
//
//
// }
// -----------------------------------------------------------------------------
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -