下面的程序总是有异常输出,请高手帮忙指点,似乎数据库是连接上了,但是找不到authors表,但是大家都知道pubs里第一张表就是authors啊!sql server里面默认就有的啊!异常:
java.sql.SQLException:[Mircosoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'authors'.import java.sql.*;public class DatabaseTest{

String url1="jdbc:odbc:pubs";
Statement s;
ResultSet rs;
Connection c;
public void run()
{
try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
c=DriverManager.getConnection(url1);
s=c.createStatement();

rs=s.executeQuery("Select * from authors");
if(rs.next())
{
System.out.println(rs.getString("au_id")+" "+rs.getString("au_lname"));
}

}catch(SQLException e1){
System.out.println(e1.toString());
}catch(Exception e)
{
System.out.println(e.toString());
}

} public static void main(String args[])
{
DatabaseTest db=new DatabaseTest();
db.run();
}
}

解决方案 »

  1.   

    顺便再问一下,jdbc:odbc:****;那个****应该写怎么东西啊?是数据库名吧~!
      

  2.   

    大哥,根本就没有连上数据库嘛!怎么能找得到表呢!看看你下面的url与classString url1="jdbc:odbc:pubs";
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");用这种类型的驱动程序,你还要建一个数据源,像这样:String url1="jdbc:odbc:yourDataSourceName";
      

  3.   

    连sqlserver那是这要,驱动根本不对,查一查书吧
      

  4.   

    <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <body> <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; //pubs为你的数据库的 String user="sa"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String sql="select * from test"; ResultSet rs=stmt.executeQuery(sql);while(rs.next()) {%> 您的第一个字段内容为:<%=rs.getString(1)%> 您的第二个字段内容为:<%=rs.getString(2)%> <%}%> <%out.print("数据库操作成功,恭喜你");%> <%rs.close(); stmt.close(); conn.close(); %> </body> </html>
      

  5.   

    那个XXXX是数据源名,设定时绑定了一个特定的数据库
    如你的pubs
      

  6.   

    想问一下,魔.天使:用这种驱动程序"com.microsoft.jdbc.sqlserver.SQLServerDriver"
    你成功过吗?我从没有成功过,说说你是怎样用的?我想知道!谢谢!
      

  7.   

    这个是标准驱动模式,前提是你要先安装Microsoft SQL Server 2000 Driver for JDBC这个驱动,并且在数据源里面设置,如果你用的Tomcat等Web服务器,还要把这个驱动lib文件夹下的三个.jar文件拷贝到相应目录,举例,在Tomcat下就要拷到common/lib这个目录下
      

  8.   

    设置数据源?但是你前面的代码里面并没有用到所设的数据源啊!你只用到所建的数据库
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; 
    我知道用"sun.jdbc.odbc.JdbcOdbcDriver"这个要建立数据源.??
      

  9.   

    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="oracle.jdbc.*"%>
    <%@ page import="oracle.jdbc.driver.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.lang.*"%><html>
      <head>
         <title></title>
         <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
      </head>
      <body>
     <FORM METHOD=POST ACTION="test.jsp" NAME=form1>
    <TABLE WIDTH=100%>
    <TR>
    <TD WIDTH=70% ALIGN=left>
    <TEXTAREA NAME="SQL" ROWS="10" COLS="60"><%
    String SqlStr = request.getParameter("SQL");
    if (SqlStr!=null)
    out.println(request.getParameter("SQL").trim());
    %>
    </TEXTAREA>
    </TD>
    <TD align=left>
    <%
    //get the DB parameter from form input
    String bddriver = "oracle.jdbc.driver.OracleDriver";
    String DBUserName = request.getParameter("DBUserName");
    String password = request.getParameter("password");
    String Sid = request.getParameter("ORACLE_SID");
    String remoteip = request.getParameter("remoteip");
    String dbport = request.getParameter("dbport");
    int port = 0;
    if (DBUserName==null||password==null||Sid==null||remoteip==null||dbport==null)
    {
    out.println("Please input right parameter!");
    %>
    RemoteIP&nbsp;<input type="text" name="remoteip" size=15 value="172.16.209.11"><BR>
    DBPort&nbsp;&nbsp;&nbsp;<input type="text" name="dbport" size=10 value="1521"><BR>
    User&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="DBUserName" size=10 value="test"><BR>
    Pass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="password" size=10 value="oracle"><BR>
    SID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="ORACLE_SID" size=10 value="webdb181"><BR><BR>
    <INPUT TYPE="submit" NAME="SubmitSQL" VALUE="Excute SQL">
    </TD></TR>
    </TABLE>
      <table border="1">
    <%
    }
    else
    {
    %>
    RemoteIP&nbsp;<input type="text" name="remoteip" size=15 value="<%=remoteip%>"><BR>
    DBPort&nbsp;&nbsp;&nbsp;<input type="text" name="dbport" size=10 value="<%=dbport%>"><BR>
    User&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="DBUserName" size=10 value="<%=DBUserName%>"><BR>
    Pass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="password" size=10 value="<%=password%>"><BR>
    SID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="ORACLE_SID" size=10 value="<%=Sid%>"><BR><BR>
    <INPUT TYPE="submit" NAME="SubmitSQL" VALUE="Excute SQL">
    </TD></TR>
    </TABLE>
      <table border="1">
    <%
    }
    if(dbport!=null)
    port = Integer.parseInt(dbport);
    if(Sid!=null)
    Sid = Sid.substring(Sid.indexOf("_")+1);
    String SqlString = request.getParameter("SQL");
    String dburl = "jdbc:oracle:thin:@"+remoteip+":"+port+":"+Sid;
    bddriver = "oracle.jdbc.driver.OracleDriver";
    int count=0;
    if (SqlString!=null)
    {
    try
    {
    Class.forName(bddriver);
    //out.println("Connecting to DB...");
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection(dburl,DBUserName,password); 
    //out.println("Connected OK!");
    Statement stmt=conn.createStatement(); 
    java.util.Date beforeEXE = new java.util.Date();
    out.println(SqlString);
    ResultSet rs = stmt.executeQuery(SqlString);
    java.util.Date afterEXE = new java.util.Date();
    ResultSetMetaData rsmd = rs.getMetaData();
    int numCols =rsmd.getColumnCount();
    %>
    <tr>
    <%//display the column name for table
    for (int i=1;i<=numCols;i++)
    {
    out.println("<td>"+rsmd.getColumnName(i)+"</td>");
    }
    %>
    </tr>
    <%//display each row for query
    while(rs.next())
    {
    out.println("<tr>");
    for (int i=1;i<=numCols;i++)
    out.println("<td>"+rs.getString(i)+"</td>");
    out.println("</tr>");
    }
    out.println("</table>");
    rs.close();
    stmt.close();
    conn.close();
    //out.println("<br> This is the time(millsecondes) before execute the sql:"+beforeEXE.getTime());
    //out.println("<br> This is the time(millsecondes) after execute the sql:"+afterEXE.getTime());

    long t1 = beforeEXE.getTime();
    long t2 = afterEXE.getTime();
    long useTimeMillSecond = t2 - t1;
    long leftTimeMillSecond = useTimeMillSecond%1000;
    long useTimeSec = useTimeMillSecond/1000;
    long howHours = useTimeSec/3600;
    long howMins = (useTimeSec - howHours*3600)/60;
    long howSeconds = useTimeSec - howHours*3600 - howMins*60;
    String strReturn = ""+howSeconds+" seconds "+leftTimeMillSecond+" millseconds";
    if (howMins > 0)
    strReturn = ""+howMins+" minutes "+strReturn;
    if (howHours > 0)
    {
    if (howHours == 1)
    strReturn = ""+howHours+" hour "+strReturn;
    else
    strReturn = ""+howHours+" hours "+strReturn;
    }
    out.println("Time elapsed:"+strReturn);
    }
    catch(Exception e)
    {
    String err = e.getMessage();
    out.println("<br> error"+err);
    //System.out.println("Connection failed");
    }
    }
    %>

      </body>
      </FORM>
     </html>
    这是我以前刚学时写的一个页面,拿去参考一下吧,我用的就是Microsoft SQL Server 2000 Driver for JDBC里的三个jar文件:msbase.jar, mssqlserver.jar, msutil.jar
      

  10.   

    String url1="jdbc:odbc:pubs"; 
    有问题吧,pubs应该事odbc的dsn吧,
    改为
    String url1="jdbc:odbc:mydsn"; 
    mydsn在数据源里配置好就行了,不应该事库名.
      

  11.   

    请问一下魔.天使:
    我在向jbuildre2005加载驱动的时候和数据库连不起来,我是按以下步骤做的:
    建一个new project,工程名为restaurant
    tool->configure libraries,按new添加name为JDBCDriverForSQLServer,位置为user home,在libraries paths中把SQL Server 2000 JDBC驱动目录下的三个.jar文件加载进来
    enterprise->enterprise setup->add,将刚建的JDBCDriverForSQLServer驱动加进来
    重起jbuilder并打开工程
    project->project properties->paths->required libraries->add,将JDBCDriverForSQLServer.config加入到路径中.
    tool->database pilot->options->drivers->add,
    driver class为com.microsoft.jdbc.sqlserver.SQLServerDriver
    URL为jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Restaurant
    在file中新建URL,driver为com.microsoft.jdbc.sqlserver.SQLServerDriver(选象中此驱动已变灰),URL默认
    连接时错误提示是:[SQLServer 2000Driver for JDBC]error establishing socket
    jbuilder版本2005,数据库SQLServer 2000,已经安装了SQL Server 2000 JDBC驱动
      

  12.   

    用我帮你改的看看,运行的前提是你的机子必须已经安装了jdbc驱动! 
    import java.sql.*;
     import java.io.*;
     import java.util.*;
      class TestDB
     {
        public static void main (String args[])
        {
           try
           {
              runTest();
           }
           catch (SQLException ex)
           {
              while (ex != null)
              {
                 ex.printStackTrace();
                 ex = ex.getNextException();
             }
           }
           catch (IOException ex)
           {
              ex.printStackTrace();
           }
        }
        public static void runTest()
           throws SQLException, IOException
        {
           Connection conn = getConnection();
           try
           {
              Statement stat = conn.createStatement();
              ResultSet result = stat.executeQuery("SELECT * FROM authors");
              while(result.next())
             {
              System.out.println(result.getString(1));
             }
           }
           finally
           {
              conn.close();
           }
        }
        public static Connection getConnection()
           throws SQLException, IOException
        {
    try
    {
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    }
    catch(Exception e)
    {
    System.out.println(e);
    }        String url ="jdbc:microsoft:sqlserver://192.168.1.1:1433;DatabaseName=pubs";//ip地址换一下
           String username = "dbuser";//你的用户名
           String password = "qaz123";//你的密码
           return DriverManager.getConnection(url, username, password);
        }
     }