try{
class.forName(driver);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
错了,应该写在方法里面。。。
public Connection getConnection()
{
try{
class.forName(driver);
connection = DriverManager.getConnection(URL,username,password);
}
catch (SQLException e1)
{
e1.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
return connection;
}
或者把他放在构造方法里。专
当然是:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
编译肯定不对。属
2. 急:怎么把java类封装成SDK,还要放入连接池,怎么搞啊,大神们
呵呵 这哥们是新手 从描述问题上来看就可以看出 你的意图估计是这样:
你想把一个类或一些类打包成jar文件,至于这个jar文件有什么api,我从你所说的连接池来看应该是创建数据库连接的一些api吧,你想把这些连接丢给连接池来管理,对吗?
首先,你封装好的创建连接的api,系统初始化时就创建一定数量的的连接。
第二,把这些连接丢给连接池。
第三,让连接池来维护你的连接,如果连接池中的连接数少于你定的阀值,就让其再调用你之前封装的api创建一些连接,再纳入连接池中。如此循环。
第四,程序要使用连接就直接从连接池中取。
//初始化连接池
StringconnUrl="jdbc:mysql://your.database.domain/yourDBname";
Stringdriver="com.mysql.jdbc.Driver";
privateMap<java.sql.Connection,String>connectionPool=null;
privatevoidinitPool(){
try{
connectionPool=newHashMap<java.sql.Connection,String>();
Class.forName(driver);
java.sql.Connectioncon=DriverManager.getConnection(dbUrl);
for(intpoolInd=poolSize;poolInd<0;poolInd++){
connectionPool.put(con,"AVAILABLE");
}
}
//取连接
publicjava.sql.ConnectiongetConnection()throwsClassNotFoundException,SQLException
{
booleanisConnectionAvailable=true;
for(Entry<java.sql.Connection,String>entry:connectionPool.entrySet()){
synchronized(entry){
if(entry.getValue()=="AVAILABLE"){
entry.setValue("NOTAVAILABLE");
return(java.sql.Connection)entry.getKey();
}
isConnectionAvailable=false;
}
}
if(!isConnectionAvailable){
Class.forName(driver);
java.sql.Connectioncon=DriverManager.getConnection(connUrl);
connectionPool.put(con,"NOTAVAILABLE");
returncon;
}
returnnull;
}
//释放连接
publicvoidcloseConnection(java.sql.Connectionconnection)throwsClassNotFoundException,SQLException{
for(Entry<java.sql.Connection,String>entry:connectionPool.entrySet()){
synchronized(entry){
if(entry.getKey().equals(connection)){
//
entry.setValue("AVAILABLE");
}
}
}
}
基本上连接池的实际工作原理就是这样,当然建议使用开源现成的C3P0,DBCP。
3. JAVA中封装的问题,为什么使用封装,封装的意义是什么
个人理解可能不对,有更好的回答也请回复我
1.为什么要用封装,封装简单的说能屏蔽方法的复杂性,比如只要知道方法的参数类型就可以使用方法,再说降低模块之间的耦合性,就是模块之间的联系,让之相互独立,能提高系统的健壮性,就是不容易崩溃,相应的对应的方法也变得很多,有重复。你说的公开的类型,不一定能满足所有功能需求,多个模块公用一个方法,为了满足各个需求不断修改,代码量庞大,功能很多,但是一出问题,系统就全乱套了。
2.封装不只有set和get。你往后学就知道了。
3.封装整个父类吗? 这个不需要吧,java 有继承,是多态的表现形式,此外还能实现接口,都能满足要求,再比如抽象类也可以实现部分功能的传递或者方法规范的传递。
4. 我用java 查询数据库中表的一个字段内容,该字段全是数字如何封装封装后又如何取出来
你查询数据查询后就是一个ResultSet对象
拿个例子来说吧
一个查询语句
select name,age,sex from user
你查询后得到一个ResultSet rs
然后你去循环这个rs
while(rs.next()){
String name = rs.getString("name");
String age= rs.getString("age");
}
或者你写一个bean 例如是User.java
里面有 name age sex 对象的属性和getXXX(),setXXX()方法
那就可以这样写
User user = new User()
while(rs.next()){
user.setName(rs.getString("name"));
user.setAge( rs.getString("age"));
}
如果有逻辑要用到name或者age
你就可以直接用这个user里面的数据了
5. java对数据库操作的封装是怎么样的
java本身对数据库没有封装,对数据库封装好的有hibernate,ibatis(mybatis),hibernate封装的比较彻底,基本操作不用自己写SQL语句,ibatis的话还是要自己写SQL语句,比较灵活.
6. java数据库封装
package com.lc.util;
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 Datebase{
public Connection conn=null;
public Statement stmt=null;
public ResultSet rs=null;
public PreparedStatement preparedstmt=null;
private static String dbDriver="com.mysql.jdbc.Driver";
private static String dbUrl="jdbc:mysql://localhost/graatedmanager?useUnicode=true&characterEncoding=gb2312";
private static String dbUser="root";
private static String dbPwd="root";
//打开数据库连接
public Datebase(){}
public static Connection getConnection()
{
java.sql.Connection conn=null;
try
{
Class.forName(dbDriver);
conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);
}
catch(Exception e)
{
e.printStackTrace();
}
if(conn==null)
{
System.err.println("警告:数据库连接失败!");
}
return conn;
}
//读取结果集
public ResultSet doQuery(String sql)
{
try
{
conn=Datebase.getConnection();
stmt=((java.sql.Connection) conn).createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLException e)
{
e.printStackTrace();
}
return rs;
}
//更新数据
public int Prepared_doUpdate(String sql,String parameters[])
{
int result=0;
try
{
conn=Datebase.getConnection();
preparedstmt=conn.prepareStatement(sql);
/* for(int i=0;i<parameters.length;i++)
{
System.out.println(parameters[i]);
}*/
if(parameters!=null)
{
for(int i=0;i<parameters.length;i++)
{
preparedstmt.setString(i+1,parameters[i]);
}
}
result=preparedstmt.executeUpdate();
}
catch(SQLException e)
{
e.printStackTrace();
System.out.println("操作失败");
result=0;
}
return result;
}
//更新数据
public int doUpdate(String sql)
{
int result=0;
try
{
conn=Datebase.getConnection();
stmt=((java.sql.Connection) conn).createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
result=stmt.executeUpdate(sql);
}
catch(SQLException e)
{
result=0;
}
return result;
}
//关闭数据库连接
public void closeConnection()
{
try
{
if(rs!=null)
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
if(conn!=null)
((Statement) conn).close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
7. java:”将数据库操作封装成接口“是什么意思要是封装成类我明白是全装在类里的意思,可接口不是没
就是定义接口,完你的类去实现接口
之后在外面调用的时候是通过接口new实现类去调用链接。
这是java中的一种多态表现,是想让你实现这个。。