{
mysqlCon= DriverManager.getConnection(
mysqlURL,mysqlUser,mysqlPassword)
Statement stmt = mysqlCon.createStatement()<--------
楼主这句错了你已经声明了一个private static Statement stmt这里又重新一个对象,所以这样改用你的类已经声明的
stmt = mysqlCon.createStatement()直接把Statement删了再试试估计就可以了
if (!mysqlCon.isClosed())
System.out.println("连接数据库成功")
System.out.println("Autocommit 为" + mysqlCon.getAutoCommit())
// mysqlCon.close()
}
__________________________________________________
/ 70行 ResultSet rs = stmt.executeQuery(sql)
楼主是的你看executeQuery(sql)是stament的对象stmt调用的,不是ConnDB的对象调用的,为什么要ConnDB c= new ConnDB()因为楼主你的数据库的连接和stament的对象的初始化是用ConnDB的构造函数完成的,如果new一个ConnDB()就直接完成和数据库连接,而且你的stmt就不会是null值了
还有那个方法其实是封装stam的方法,一般是用public,你看方法里面executeQuery(sql)方法也是stament对象调用的,这样写有个好处直接ConnDB c= new ConnDB(),c.executeQuery(sql)就可以执行数据库查询了,完全不用再和stament的对象打交道,这就是一种简单工厂模式的应用,楼主多练练,以后就会体会了。
————————————————————————————
楼上的朋友第一个建议很好,但第二个回答的回答有误导之嫌,String mysqlURL= "jdbc:mysql://localhost:3306/bicel"
String mysqlUser = "root"
String mysqlPassword ="mysql"
这样声明很对,我做了项目都这样申明,这样声明有个好处你移植到别的数据库直接把对应url,mysqlUser,mysqlPassword写上去在吧驱动换一下就行了,比较清楚,也让项目的其他程序员看的很清楚,还有楼主分是你的,自己拿捏吧。
Discuz!NT多层架构DNT.config中配置数据库连接字符串
Discuz.Data命名空间DbHelper类数据访问,
Discuz.Data命名空间IDataProvider为逻辑 *** 作接口,
使用了工厂模式对应到实际的 *** 作类中,如Discuz.Data.SqlServer、Discuz.Data.MySQL等
配置文件的序列化和反序列化,见Discuz.Config命名空间
Discuz.Common命名空间包含一些工具类,如数据校验、数据转换、字符串 *** 作等。
还有一些如缓存、web服务等
呵呵,说得有点乱
链接数据库用到JDBC,一般链接数据库都要用到数据库驱动、链接字符串、登录名、登录密码。这4个属性可以提取到一个父类中,每一种数据库写一个类继承父类。要是这些都没问题了,就可以用楼上哥们儿说的,简单工厂模式,简单工厂是用到了java中的多态特性。import java.sql.Connection
public abstract class BaseConnect {
public BaseConnect(String driverClass, String url, String loginName,
String password) {
super()
this.driverClass = driverClass
this.url = url
this.loginName = loginName
this.password = password
}
protected String driverClass
protected String url
protected String loginName
protected String password
public abstract void initDriver()
public abstract Connection getConnect()
public abstract void closeConnect(Connection conn)
}
import java.sql.Connection
import java.sql.DriverManager
import java.sql.SQLException
public class OraclConnect extends BaseConnect {
public OraclConnect(String driverClass, String url, String loginName,
String password) {
super(driverClass, url, loginName, password)
// TODO Auto-generated constructor stub
}
@Override
public void initDriver() {
try {
Class.forName(driverClass)
} catch (ClassNotFoundException e) {
e.printStackTrace()
}
}
@Override
public Connection getConnect() {
try {
return DriverManager.getConnection(url, loginName, password)
} catch (SQLException e) {
e.printStackTrace()
}
return null
}
@Override
public void closeConnect(Connection conn) {
try {
if (conn != null &&!conn.isClosed()) {
conn.close()
}
} catch (SQLException e) {
e.printStackTrace()
}
}
}
以此类推,上面代码是我随便一写,你自己再改进下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)