首先奉上代码  和报错信息
<pre>
public class OracleHelper {
//定义三个变量
private static Connection ct=null;
private static PreparedStatement ps=null;
private static ResultSet rs=null;
//连接数据库的用户名  密码   URL  驱动
//说明: 在实际开发中,我们往往把这些变量写到一个外部文件中去,
//当文件启动的时候, 我们读入这些配置信息 java.util.Properties
private static String username;//="scott";
private static String password;//="tiger";
private static String driver;//="oracle.jdbc.driver.OracleDriver";
private static String url;//="jdbc:oracle:thin:@127.0.0.1:1521:orcloyc";


//使用静态块加载驱动
static{
try {

username=OracleHelper.getValues("username");
password=OracleHelper.getValues("password");
driver=OracleHelper.getValues("driver");
url=OracleHelper.getValues("url");
Class.forName(driver);
System.out.println(username+password+driver+url);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("哈哈");
e.printStackTrace();
}
}

//写一个统一的增删改方法
public static void executeUpdate(String sql,String[] parameters)
{
try
{
ct=DriverManager.getConnection(url,username,password);
ps=ct.prepareStatement(sql);
if(parameters!=null)
{
for(int i=0;i<parameters.length;i++)
{
ps.setString(i+1, parameters[i]);
}
}
//执行
ps.executeUpdate();

}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
close(rs,ps,ct);
}
}


//写一个方法完成查询任务
//sql表示要执行的sql语句
//sql select * from emp where ename=?
public static ResultSet executeQuery(String sql,String[] parameters)
{
//根据实际情况 我们对sql语句的问号赋值
try{

//得到连接
ct=DriverManager.getConnection(url,username,password);
//创建ps对象           sql语句对象
ps=ct.prepareStatement(sql);
//如果parameters不为空 我们才去赋值
if(parameters!=null)
{
for(int i=0;i<parameters.length;i++)
{
ps.setString(i+1, parameters[i]);
}
}
rs=ps.executeQuery();
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
//close(rs,ps,ct);

return rs;
}
public static Connection getCt() {
return ct;
}
public static PreparedStatement getPs() {
return ps;
}
//把关闭资源写成一个函数封装起来;
public static void close(ResultSet rs,Statement ps, Connection ct)
{
if(rs!=null){
try{rs.close();
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
    }
      }
rs=null;
if(ct!=null){
try{ct.close();
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
    }
      }
ct=null;
if(ps!=null){
try{ps.close();
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
    }
      }
ps=null;
}
public static String getValues(String s)

{
Properties pp=new Properties();
FileInputStream fis=null;
String s1=null;
try {
fis=new FileInputStream("dbinfo.properties");
pp.load(fis);
//s1=(String)pp.get(s);
s1=pp.getProperty(s);
System.out.println("username="+s1);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if(fis!=null)
{
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
fis=null;
}
return s1;
}


}
<h1>这是编译的部分结果 以及错误提示:</h1>
username="scott"
username="tiger"
username="oracle.jdbc.driver.OracleDriver"
username="jdbc:oracle:thin:@127.0.0.1:1521:orcloyc"
哈哈
java.lang.ClassNotFoundException: "oracle.jdbc.driver.OracleDriver"
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at oracle.oyc.OracleHelper.<clinit>(OracleHelper.java:30)
at oracle.oyc.test4.main(test4.java:13)
java.sql.SQLException: No suitable driver found for "jdbc:oracle:thin:@127.0.0.1:1521:orcloyc"
at java.sql.DriverManager.getConnection(DriverManager.java:604)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at oracle.oyc.OracleHelper.executeQuery(OracleHelper.java:74)
at oracle.oyc.test4.main(test4.java:13)
Exception in thread "main" java.lang.RuntimeException: No suitable driver found for "jdbc:oracle:thin:@127.0.0.1:1521:orcloyc"
at oracle.oyc.OracleHelper.executeQuery(OracleHelper.java:88)
at oracle.oyc.test4.main(test4.java:13)</pre>大哥们不要嫌代码长啊  我先分析下 我调试多次后的结果  和自己得出的一些结论吧  你们再帮我分析下
我最后一个函数 就是用流来读取 外面的配置文件首先  如果 我将username  driver等  写死的话  就是不从外面读取的话 不出问题 调用这个类的函数 运行正常;
然后 我在getvalues这个函数中  打印了结果  确实读取到了 
我在静态代码块中的赋值  最后结果也读取到了
但是  最后打印出了  我放在catch语句中的  “哈哈”  而且 加载驱动之前的一句打印语句也没出来 
就是说  错就出在  class.forName(driver)这句,,
这句话  到底错在哪了,,
我driver也赋值了啊  到底是错在哪  我很纳闷
各位大哥 帮我看看呗
谢谢哈

解决方案 »

  1.   

    没有oracle类库 或者你加错oracle类库,网上找个。
      

  2.   

    1 没有oracle类库 或者你加错oracle类库
    2 检查下你的dbinfo.properties文件中的driver 
    3 fis=new FileInputStream("dbinfo.properties") 里的路径错误
      

  3.   

    1类库有的 我找专门在引入的jar包里面找到了 相应的驱动类,
    2这个driver路径我 一直都是赋值黏贴的  而且我反复检查了N遍 没错
    3路径不会出错的   因为我打印结果已经说明了  我读取到了
    下面我在给你我  改动后的  打印结果
    这是getvalue函数中的一点小改动System.out.println("username="+s1)改成System.out.println(s+"="+s1);
    try {
    fis=new FileInputStream("dbinfo.properties");
    pp.load(fis);
    //s1=(String)pp.get(s);
    s1=pp.getProperty(s);
    System.out.println(s+"="+s1);第二点 就是,在赋值完后 加了一条打印语句 以精确查找出错位置 
    try {

    username=OracleHelper.getValues("username");
    password=OracleHelper.getValues("password");
    driver=OracleHelper.getValues("driver");
    url=OracleHelper.getValues("url");
    System.out.println(username+password+driver+url+"--------------------");
    Class.forName(driver);
    System.out.println(username+password+driver+url);
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    System.out.println("哈哈");
    e.printStackTrace();
    3 这是输出结果
    username="scott"
    password="tiger"
    driver="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@127.0.0.1:1521:orcloyc"
    "scott""tiger""oracle.jdbc.driver.OracleDriver""jdbc:oracle:thin:@127.0.0.1:1521:orcloyc"--------------------
    哈哈
    java.lang.ClassNotFoundException: "oracle.jdbc.driver.OracleDriver"
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at oracle.oyc.OracleHelper.<clinit>(OracleHelper.java:32)
    at oracle.oyc.test4.main(test4.java:13)
    java.sql.SQLException: No suitable driver found for "jdbc:oracle:thin:@127.0.0.1:1521:orcloyc"
    at java.sql.DriverManager.getConnection(DriverManager.java:604)
    at java.sql.DriverManager.getConnection(DriverManager.java:221)
    at oracle.oyc.OracleHelper.executeQuery(OracleHelper.java:76)
    at oracle.oyc.test4.main(test4.java:13)
    Exception in thread "main" java.lang.RuntimeException: No suitable driver found for "jdbc:oracle:thin:@127.0.0.1:1521:orcloyc"
    at oracle.oyc.OracleHelper.executeQuery(OracleHelper.java:90)
    at oracle.oyc.test4.main(test4.java:13)
      

  4.   

    java.lang.ClassNotFoundException
    看看你类库是不是重复了不行重新构建一个新的程序测试下了
      

  5.   

    是不是你的build path没有配对