关于jsp连接SQLserver 2000 的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于jsp连接SQLserver 2000 的问题相关的知识,希望对你有一定的参考价值。

我的代码~~~

<%@ 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=student\";
String user=\"stu\";
String password=\"stu\";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql=\"select * from T_User\";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) %>
<%=rs.getString(1)%>
<%%>
<%rs.close();
stmt.close();
conn.close();
%>

</body>
</html>

然后报错是下边的
我在我的lib下装了很多包~~我不知道是什么问题~~请好心的你帮帮我~~~

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /test.jsp(1,25) quote symbol expected
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:204)
org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:154)
org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:166)
org.apache.jasper.compiler.ParserController.getPageEncodingForJspSyntax(ParserController.java:490)
org.apache.jasper.compiler.ParserController.determineSyntaxAndEncoding(ParserController.java:431)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:207)
org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:120)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:165)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.

--------------------------------------------------------------------------------

Apache Tomcat/6.0.20

我不知道怎么加200分 但是我会追加分数的

你把下面的代码的url和驱动改成sql2000的就好了,完整代码如下,记得jar驱动放好,如果输出的是内存地址的话就证明配置没问题,不然就是你的操作或者配置问题了:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao
private static final String DRIVER_CLASS="com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static final String URL="jdbc:sqlserver://localhost:1433;DATABASENAME=managerNews";
private static final String UNAME="sa";
private static final String UPASSWORD="sa";

/*
* 连接数据库
*/
public Connection getConnection()
Connection conn=null;
try
Class.forName(DRIVER_CLASS);
conn=DriverManager.getConnection(URL,UNAME,UPASSWORD);
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();


return conn;

/*
* 关闭conn,ps,rs,释放资源
*/
public void closeAll( Connection conn, PreparedStatement ps, ResultSet rs )
/* 如果rs不空,关闭rs */
if(rs != null)
try rs.close(); catch (SQLException e) e.printStackTrace();

/* 如果pstmt不空,关闭pstmt */
if(ps!= null)
try ps.close(); catch (SQLException e) e.printStackTrace();

/* 如果conn不空,关闭conn */
if(conn != null)
try conn.close(); catch (SQLException e) e.printStackTrace();



// public static void main (String[] args)
//
// BaseDao bo= new BaseDao();
// Connection conn=null;
// conn=bo.getConnection();
// System.out.print(conn);
//
//
参考技术A <%
try
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";
String user="stu";
String password="stu";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from T_User";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
out.println(rs.getString(1)); //此处循环输出你想要的显示的

catch(Exception e)e.printStackTrace();
finally
rs.close();
stmt.close();
conn.close();

%>
参考技术B 把双引号前面的\去掉,全部的 参考技术C 将class那句改成这样: class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver");

关于SQLServer2008链接时找不到实例问题解决方案

关于SQLServer2008问题解决方案:

问题:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (Microsoft SQL Server,错误: 2)

如下图:

 

===================================

 

无法连接到 .

 

===================================

 

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (.Net SqlClient Data Provider)

 

------------------------------

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=2&LinkId=20476

 

------------------------------

错误号: 2

严重性: 20

状态: 0

 

 

------------------------------

程序位置:

 

    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)

    System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject, Boolean withFailover)

    System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject, Boolean withFailover)

    System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)

    System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)

    System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)

    System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)

    System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)

    System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)

    System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)

    System.Data.SqlClient.SqlConnection.Open()

    Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ObjectExplorer.ValidateConnection(UIConnectionInfo ci, IServerType server)

    Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()

 

对于这个问题,字面意思看,就是缺少实例,因为在安装的时候,选择的是默认实例,在这里登录的时候,因为是本地登录,直接用的local。选择windows身份验证,结果就出错了。然后查看服务的时候,没有找到默认实例的服务。因此首先是重新安装一遍SqlServer2008,使用的是自己命名的新实例。安装完成后,查看服务,发现服务中已经有了新实例的名称。

 

右键新服务的属性,在登录中,选择登录身份是本地系统账户。然后登录的时候,在登录界面,服务器类型选择数据库引擎,服务名称选择浏览更多,在数据库引擎下面选择本机的数据库引擎,也就是新建的实例对应的引擎。使用Windows身份登录,直接登录。

 

以上是关于关于jsp连接SQLserver 2000 的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于obdc连接sqlserver的问题

JSP网页如何连接数据库?

关于 Java连接sql的转载

jsp连接数据库方法(详细的)

如何解决 SQL Server 2000 中的连接问题

关于SQLServer 2000 索引问题