免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2280 | 回复: 9
打印 上一主题 下一主题

请帮一下忙,我找不到出错的地方在那里,多谢了。javabean连接数据库的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-25 12:06 |只看该作者 |倒序浏览
请帮一下忙,我找不到出错的地方在那里,多谢了。

package database;
import java.sql.*;
import java.lang.*;

public class ConnDb
{
private Connection connection=null;//变量声明
private Statement statement=null;
private ResultSet rs=null;
private String msg="";

//连接数据库
public void getConn()
     {
      try{
     loadMysql("mydata","root","111";//调用方法加载mysql驱动
     statement = connection.createStatement();
     }catch(Exception e)
     {
      msg=e.toString()+"数据库连接出错";
     }
     }
     public ResultSet selectDb(String sql) //查询数据库
     {
      try{
      rs = statement.executeQuery(sql);
        return rs;
      }
       catch(Exception e)
      {  
        msg="数据库查询出错"+e.toString();
       return null;
      }
     }
//***************************
//连接Mysql
public void loadMysql(String database,String user,String password)
     {
      try{
      Class.forName("com.mysql.jdbc.Driver";
      String url = "jdbc:mysql://localhost/"+database;
      connection=DriverManager.getConnection(url,user,password);
      }
      catch(ClassNotFoundException ex)
      {
      msg="数据库类载入出错"+ex.toString();
      }
      catch(SQLException SQLex)
      {
      msg="数据库载入出错"+SQLex.toString();
      }
      catch(Exception e)
      {  
      msg="数据库最终出错"+e.toString();
      }      
     }
//***************************
//连接Sqlserver
     public void loadsqlDriver(String database,String user,String password)
     {
     try{
     String sDBDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
     String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName="+database;
     Class.forName(sDBDriver);
     connection=DriverManager.getConnection(connectionUrl,user,password);
     }
     catch(ClassNotFoundException ex)
     {
      msg="数据库类载入出错"+ex.toString();
      }
      catch(SQLException SQLex)
      {
      msg="数据库载入出错"+SQLex.toString();
      }      
     }
     
//***************************
//连接oracle      
     public void loadoracleDriver(String database,String user,String password)
     {
      try{
      Class.forName("oracle.jdbc.driver.OracleDriver";//连接oracle
      String url= "jdbcracle:thinlocalhost:1521:"+database;//ORCL
        connection=DriverManager.getConnection(url,user,password);
      }
     catch(ClassNotFoundException ex)
     {
      msg="数据库类载入出错"+ex.toString();
      }
      catch(SQLException SQLex)
      {
      msg="数据库载入出错"+SQLex.toString();
      }      
     }

//******************************************************************************************************************
//更新数据库
public int updateDb(String sql)     //更新数据库
{
      try{
      int s = statement.executeUpdate(sql);
      return s;
      }
      catch(Exception e)
      {
      msg="数据库更新出错"+e.toString();
      return 0;
      }
}

//******************************************************************************************************************
//关闭数据库
public void closeDb()     //关闭数据库
{

      try{
      if(rs!=null)
       rs.close();
      if(statement!=null)
       statement.close();
      if(connection!=null)
       connection.close();
      }
      catch(Exception e)
      {
       msg="数据库关闭出错"+e.toString();
      }
}
public static void main(String[] args)
{
/*
      ConnDb db = new ConnDb();
      db.getConn();
      String sql = "select mainid,subject1 from nmaintbl limit 0,5";
      ResultSet ss = db.selectDb(sql);
      if(ss!=null){
      try{
      while(ss.next())
      {
      System.out.println(ss.getString(1));
      System.out.println(ss.getString(2));
      }
      }catch(Exception e)
      {
       System.out.println("数据有错";
      }
      }
      else{
      System.out.println("失败";
      }
*/  
}

}


D:\MyJavaClass>java ConnDb
Exception in thread "main" java.lang.NoClassDefFoundError: ConnDb (wrong name: d
atabase/ConnDb)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)

论坛徽章:
0
2 [报告]
发表于 2008-07-25 14:00 |只看该作者
出错信息表明,你的环境变量设定的有问题,应该是PATH变量设定问题
PATH路径设定到DATABASE一级,再用JAVA database.ConnDb
来执行

论坛徽章:
0
3 [报告]
发表于 2008-07-25 15:05 |只看该作者
哈,我删除了package database;这一句,再编译运行就没有问题了。可为什么不能使用package database;这句呢?

论坛徽章:
0
4 [报告]
发表于 2008-07-25 19:44 |只看该作者
原帖由 superwolfman 于 2008-7-25 15:05 发表
哈,我删除了package database;这一句,再编译运行就没有问题了。可为什么不能使用package database;这句呢?

不要删除了package database,试试

D:\MyJavaClass>mkdir database
D:\MyJavaClass>copy ConnDb.java database
D:\MyJavaClass>del ConnDB.java
D:\MyJavaClass>javac database\ConnDb.java
D:\MyJavaClass>java database.ConnDb

再体会下package是什么。

论坛徽章:
0
5 [报告]
发表于 2008-07-26 09:39 |只看该作者
多谢caojiqun , 按您你方法,成功了。按我的理解,package的意思就是目录路径吧。

论坛徽章:
0
6 [报告]
发表于 2008-07-26 10:26 |只看该作者
可又有新的问题了,
D:\MyJavaClass>java database.ConnDb 这样确实成功。
可若我:
cd ..
java database.ConnDb  //出错了
D:\>java MyJavaClass\database.ConnDb //也出错了

有什么方法能在任意目录可以执行java database.ConnDb?多谢~~~

论坛徽章:
0
7 [报告]
发表于 2008-07-26 12:23 |只看该作者
javac -d

论坛徽章:
0
8 [报告]
发表于 2008-07-26 14:19 |只看该作者
原帖由 superwolfman 于 2008-7-26 09:39 发表
...... 按我的理解,package的意思就是目录路径吧。

可以这样理解吧。如果用winrar打开任一个jar文件,例如tools.jar就可以清楚看到各个包以及类文件的目录结构。

原帖由 superwolfman 于 2008-7-26 10:26 发表
可又有新的问题了,
D:\MyJavaClass>java database.ConnDb 这样确实成功。
可若我:
cd ..
java database.ConnDb  //出错了
D:\>java MyJavaClass\database.ConnDb //也出错了

有什么方法能在任意目录可 ...


这就是一个CLASSPATH的问题了。假定你打算把你编写的程序都放在D:\MyJavaClass目录(及以下的子目录)里,就可以在CLASSPATH里加上它
set CLASSPATH=%CLASSPATH%;D:\MyJavaClass   
但仅仅这一个程序就不必这样做了, 任意目录下运行

java -classpath %CLASSPATH%;D:\MyJavaClass database.ConnDb

论坛徽章:
0
9 [报告]
发表于 2008-07-26 14:23 |只看该作者
原帖由 艾斯尼勒 于 2008-7-26 12:23 发表
javac -d

-d <目录>  指定编译产生的类文件存放的位置(目录)

论坛徽章:
0
10 [报告]
发表于 2008-07-28 10:29 |只看该作者
多谢caojiqun 的耐心指导~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP