下面的程序总是有异常输出,请高手帮忙指点,似乎数据库是连接上了,但是找不到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();
}
}
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();
}
}
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");用这种类型的驱动程序,你还要建一个数据源,像这样:String url1="jdbc:odbc:yourDataSourceName";
如你的pubs
你成功过吗?我从没有成功过,说说你是怎样用的?我想知道!谢谢!
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
我知道用"sun.jdbc.odbc.JdbcOdbcDriver"这个要建立数据源.??
<%@ 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 <input type="text" name="remoteip" size=15 value="172.16.209.11"><BR>
DBPort <input type="text" name="dbport" size=10 value="1521"><BR>
User <input type="text" name="DBUserName" size=10 value="test"><BR>
Pass <input type="text" name="password" size=10 value="oracle"><BR>
SID <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 <input type="text" name="remoteip" size=15 value="<%=remoteip%>"><BR>
DBPort <input type="text" name="dbport" size=10 value="<%=dbport%>"><BR>
User <input type="text" name="DBUserName" size=10 value="<%=DBUserName%>"><BR>
Pass <input type="text" name="password" size=10 value="<%=password%>"><BR>
SID <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
有问题吧,pubs应该事odbc的dsn吧,
改为
String url1="jdbc:odbc:mydsn";
mydsn在数据源里配置好就行了,不应该事库名.
我在向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驱动
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);
}
}