数据库连接的代码:
  <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>   
  <%
    request.setCharacterEncoding("gbk");
    try
    {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
    String url = "jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=D:\\Program Files\\Tomcat 5.0\\webapps\\ROOT\\JspTest\\work.mdb"; 
    Connection con= DriverManager.getConnection(url);
    out.println("恭喜数据库连接成功!");
    //关闭连接、释放资源
    
    con.close();
    }
    catch(Exception e)
    {
        out.println("数据库连接失败!"+e.getMessage());
    }
    %>
结果 :
       无法连接到数据库!
错误提示:       数据库连接失败![Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 求助:
   
    为什么不能连接上数据库?
本身环境:
   小弟现在水平有限,只想问如何用JSP连接数据库的办法。
需求:  连接其他的常用数据库的代码,经过验证。
谢谢。

解决方案 »

  1.   

    我也是这个问题
    连ACCESS
    我都连了N次了
    网上找了好多
    就是不行
    连Mysql也不行
    网上说的都太虚了希望下面的大大
    能说的简单点啊
      

  2.   

    JSP 的舞台中需要我们的新生力量啊!
    不要遇到问题是没有人支持!  !!!!!!!!!帮助解决
      

  3.   

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.sql.*;public class ODBCBridge { public static void main(String[] args) {
      String url="jdbc:odbc:GoodsSupply";
      Statement sm=null;
      String command=null;
      ResultSet rs=null;
      String tableName=null;
      String cName=null;
      String result=null;
      BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
      try {
       try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  //加载驱动
       }catch(ClassNotFoundException e){
        System.out.println("Can not load Jdbc-Odbc Bridge Driver");
        System.err.print("ClassNotFoundException:");
        System.err.println(e.getMessage());
       }
       Connection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000认证
       DatabaseMetaData dmd=con.getMetaData();  //DMD为连接的相应情况
       System.out.println("连接的数据库:"+dmd.getURL());
       System.out.println("驱动程序:"+dmd.getDriverName());
       sm=con.createStatement();
       System.out.println("输入表名");
       tableName=input.readLine();
       while(true) {
        System.out.println("输入列名(为空时程序结束):");
        cName=input.readLine();
        if(cName.equalsIgnoreCase(""))
         break;
        command="select "+cName+" from "+tableName;
        rs=sm.executeQuery(command);  //执行查询
        if(!rs.next())
         System.out.println("表名或列名输入有误");
        else {
         System.out.println("查询结果为:");
         do
         {
          result=rs.getString(cName);
          //数据库语言设置为中文,不用转换编码
          //result=new String(result.getBytes("ISO-8859-1"),"GB2312");  
          System.out.println(result);
         }while(rs.next());
        }
       }
      }catch(SQLException ex) {
       System.out.println("SQLException:");
       while(ex!=null) {
        System.out.println("Message:"+ex.getMessage());
        ex=ex.getNextException();
       }
      }catch(Exception e) {
       System.out.println("IOException");
      }
     }
    }我用上面的JAVA文件在命令提示符执行也是一样的问题
      

  4.   

    access我是没用过,我可以写一个连接oralce9i的给你,已经测试过了 try{             
                      //加载驱动程序
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@192.168.64.5:1521:oracle9"; 
    String user="oracle9";//
    String password="sa";
                      //创建连接
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement();
    ResultSet rs=null;

    //查询并处理结果集,捕捉结果集为空异常
    try{       
    String sql="";//放入要执行的sql语句 
    rs=stmt.executeQuery(sql);
                                //检索结果集
    while(rs.next()) {
    } catch(Exception e){
    out.println("结果集检索失败!");
    }                  //关闭所有连接
    rs.close();   
    stmt.close();   
    conn.close();
      }
      catch(SQLException e){
    out.println("数据库操作失败,请与系统管理员联系!");
      }大体的步骤就是这样,如果你想把对数据库的操作放在一个javabean中,就要在jsp页面的开始用
    usebean标签将那个javabean加进来
      

  5.   

    连access最简单了,设置数据源就可以了,然后就写个测试程序,试试看
      

  6.   

    晕,csdn里发帖的编辑框格式真烂,我写的时候明明都有明显的缩进,提交过后啥都没有,真汗~~
      

  7.   

    能不能说的清楚点啊
    我是超级的菜鸟啊
    我连ORACLE9都找不到下载的地方
      

  8.   

    建议按照下面的STEP进行测试:1)打开控制面版→管理工具→数据源ODBC
    2)在用户DNS面版上点击"追加"
    3)在新的面版里头选择"Microsoft Access Driver",点"OK"
    4)在新的画面里头,数据源名称输入"jataTestDns"
    5)点数据库的"选择"按钮,选择你自己的MDB文件,譬如D:/program ....
    6)以上创建完毕ODBC,接下来写Java程序
    try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection conn = DriverManager.getConnection("jdbc:odbc:jataTestDns","","");
    }catch(Exception e){}
      

  9.   

    楼上的大哥
    我的JAVA改了下可以连接了,不过有新的问题
    我的JAVA是网上找来的,当我输入表里列的名字的时候
    就出现
    IOEception错误
    能帮我看下嘛
    最好改的简单点
    能看到数据库里的表里数据就可以了下面是代码
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.sql.*;public class ODBCBridge { public static void main(String[] args) {
      String url="jdbc:odbc:db";
      Statement sm=null;
      String command=null;
      ResultSet rs=null;
      String tableName=null;
      String cName=null;
      String result=null;
      BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
      try {
       try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动
        Connection conn = DriverManager.getConnection("jdbc:odbc:jataTestDns","","");
           }
        catch(ClassNotFoundException e){
        System.out.println("Can not load Jdbc-Odbc Bridge Driver");
        System.err.print("ClassNotFoundException:");
        System.err.println(e.getMessage());
       }
       while(true) {
        System.out.println("输入列名(为空时程序结束):");
        cName=input.readLine();
        if(cName.equalsIgnoreCase(""))
         break;
        command="select "+cName+" from "+"yu";
        rs=sm.executeQuery(command);  //执行查询
        if(!rs.next())
         System.out.println("表名或列名输入有误");
        else {
         System.out.println("查询结果为:");
         do
         {
          result=rs.getString(cName);
          //数据库语言设置为中文,不用转换编码
          //result=new String(result.getBytes("ISO-8859-1"),"GB2312");  
          System.out.println(result);
         }while(rs.next());
        }
       }
      }catch(SQLException ex) {
       System.out.println("SQLException:");
       while(ex!=null) {
        System.out.println("Message:"+ex.getMessage());
        ex=ex.getNextException();
       }
      }catch(Exception e) {
       System.out.println("IOException");
      }
     }
    }
      

  10.   

    rs=sm.executeQuery(command);  //执行查询
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这个...sm没有初始化啊.在while(true) {前面加上
    sm=conn.createStatement();
      

  11.   

    首先在建一个数据源,如jspconnect再用下面三行代码,绝对可以
    String dsn="jdbc:odbc:jspconnect"; 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn=DriverManager.getConnection(dsn,"","");
      

  12.   

    终于可以连接了
    不过只是用.JAVA在DOS下来连接
    用.JSP还是不行啊
    谢谢Tongates大大的解惑
    总算是进了一步啊:)
    下面是可以连接的代码
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.sql.*;public class ODBCBridge { public static void main(String[] args) {
      String url="jdbc:odbc:db";
      Statement sm=null;
      String command=null;
      ResultSet rs=null;
      String tableName=null;
      String cName=null;
      String result=null;
    Connection conn=null;
      BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
      try {
       try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动
        conn = DriverManager.getConnection("jdbc:odbc:jataTestDns","","");
           }
        catch(ClassNotFoundException e){
        System.out.println("Can not load Jdbc-Odbc Bridge Driver");
        System.err.print("ClassNotFoundException:");
        System.err.println(e.getMessage());
       }
       sm=conn.createStatement();
       while(true) {
        System.out.println("输入列名(为空时程序结束):");
        cName=input.readLine();
        if(cName.equalsIgnoreCase(""))
         break;
        command="select "+cName+" from "+"yu";
        rs=sm.executeQuery(command);  //执行查询
        if(!rs.next())
         System.out.println("表名或列名输入有误");
        else {
         System.out.println("查询结果为:");
         do
         {
          result=rs.getString(cName);
          //数据库语言设置为中文,不用转换编码
          //result=new String(result.getBytes("ISO-8859-1"),"GB2312");  
          System.out.println(result);
         }while(rs.next());
        }
      

  13.   

    错了,更正下,不好意思
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.sql.*;public class ODBCBridge { public static void main(String[] args) {
      String url="jdbc:odbc:db";
      Statement sm=null;
      String command=null;
      ResultSet rs=null;
      String tableName=null;
      String cName=null;
      String result=null;
    Connection conn=null;//这里定义了一个初始值
      BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
      try {
       try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动
        conn = DriverManager.getConnection("jdbc:odbc:jataTestDns","","");//这里就不要再定义了:)
           }
        catch(ClassNotFoundException e){
        System.out.println("Can not load Jdbc-Odbc Bridge Driver");
        System.err.print("ClassNotFoundException:");
        System.err.println(e.getMessage());
       }
       sm=conn.createStatement();//这个是Tongates提议加的地方
       while(true) {
        System.out.println("输入列名(为空时程序结束):");
        cName=input.readLine();
        if(cName.equalsIgnoreCase(""))
         break;
        command="select "+cName+" from "+"yu";
        rs=sm.executeQuery(command);  //执行查询
        if(!rs.next())
         System.out.println("表名或列名输入有误");
        else {
         System.out.println("查询结果为:");
         do
         {
          result=rs.getString(cName);
          //数据库语言设置为中文,不用转换编码
          //result=new String(result.getBytes("ISO-8859-1"),"GB2312");  
          System.out.println(result);
         }while(rs.next());
        }
       }
      }catch(SQLException ex) {
       System.out.println("SQLException:");
       while(ex!=null) {
        System.out.println("Message:"+ex.getMessage());
        ex=ex.getNextException();
       }
      }catch(Exception e) {
       System.out.println("IOException");
      }
     }
    }