之前一直以为接口只是用来声明一些函数,相当于用来建一个框架。今天学用java连数据库,发现声明的Connection对象本身也是一个接口。不是说接口不能实例化吗,为什么能声明Connection的对象,好困惑……
怎么实现接口才能做到像标准库理的接口一样,可以声明对象,通过对象调用函数package myjavaclass;import java.sql.*;public class dbcon {
private static String url; //数据库连接字符串
private static String username; //数据库用户名
private static String password; //数据库密码
public Connection conn;
public dbcon() {
url = "jdbc:oracle:thin:@localhost:1521:oracle";
username = "_06604";
password = "06604";
conn = conn();
}
public dbcon(String u ,String p ,String ur)
{
url=ur;
username=u;
password=p;
conn=conn();
}
public Connection conn() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, username,
password);
return con;
} catch (ClassNotFoundException cnf) {
System.out.println("driver not find:" + cnf);
return null;
} catch (SQLException sqle) {
System.out.println("can't connection db:" + sqle);
return null;
} catch (Exception e) {
System.out.println("Failed to load JDBC/ODBC driver.");
return null;
}
} public ResultSet query(String sql) {
try {
if (conn == null) {
throw new Exception("database connection can't use!");
}
if (sql == null) {
throw new Exception(
"check your parameter: 'sql'! don't input null!");
}
Statement stmt = conn.createStatement();
System.out.println(sql);
ResultSet rs = stmt.executeQuery(sql);
return rs;
} catch (Exception e) {
System.out.println("query error:" + e);
return null;
}
} public boolean execute(String sql) {
try {
if (conn == null) {
return false;
}
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
return true;
} catch (Exception e) {
return false;
}
}
}这是我用来连接数据库的,不知道我说明白了没……
怎么实现接口才能做到像标准库理的接口一样,可以声明对象,通过对象调用函数package myjavaclass;import java.sql.*;public class dbcon {
private static String url; //数据库连接字符串
private static String username; //数据库用户名
private static String password; //数据库密码
public Connection conn;
public dbcon() {
url = "jdbc:oracle:thin:@localhost:1521:oracle";
username = "_06604";
password = "06604";
conn = conn();
}
public dbcon(String u ,String p ,String ur)
{
url=ur;
username=u;
password=p;
conn=conn();
}
public Connection conn() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, username,
password);
return con;
} catch (ClassNotFoundException cnf) {
System.out.println("driver not find:" + cnf);
return null;
} catch (SQLException sqle) {
System.out.println("can't connection db:" + sqle);
return null;
} catch (Exception e) {
System.out.println("Failed to load JDBC/ODBC driver.");
return null;
}
} public ResultSet query(String sql) {
try {
if (conn == null) {
throw new Exception("database connection can't use!");
}
if (sql == null) {
throw new Exception(
"check your parameter: 'sql'! don't input null!");
}
Statement stmt = conn.createStatement();
System.out.println(sql);
ResultSet rs = stmt.executeQuery(sql);
return rs;
} catch (Exception e) {
System.out.println("query error:" + e);
return null;
}
} public boolean execute(String sql) {
try {
if (conn == null) {
return false;
}
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
return true;
} catch (Exception e) {
return false;
}
}
}这是我用来连接数据库的,不知道我说明白了没……
楼主【Dragon_L】截止到2008-07-30 16:55:22的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:0.00 % 结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=Dragon_L
interface A{}class A1 implements A{}class B{
public A b1(){
return new A1();
}
public static void main(String[] args){
B b=new B();
A a = b.b1(); //getReturn
}
}如果在上述代码中隐藏了方法b1,类B是publice的.那么你在其他地方调用类B的方法b1看上去就和获得Connection的形式差不多了,就和main方法里面的注释行差不多了.
ls正解。