java web菜鸟求教,弄了一个星期了,环境都没搭建好!求好人
环境是eclipse3.7加tomcat6.x,jdk是1.5,sql2000+sq4驱动,jdbc连接方式,有那三个包,
我在eclipse上写了一个类可以从sql中添加、删除数据都没有问题,当然运行的时候选的应用程序服务器!
现在我配置了三个文件:
第一个:context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/test" docBase="test" debug="5" reloadable="true" corssContext="true">
<Resource name="jdbc/ConnectionPool"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DtatbaseName=db_net"
username="sa"
password="123"
maxActive="50"
maxIdle="20"
maxWait="10000"
factort ="org.apache.commous.dbcp.BasicDataSourceFactory"
/>
</Context>
第二个web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>test</display-name>
<resource-ref>
<description>sql</description>
<res-ref-name>jdbc/ConnectionPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
第三个test.jsp文件:
<%@ page contentType= "text/html; charset=UTF-8" language= "java" errorPage= " " %>
<%@ page import= "java.sql.* "%>
<%@ page import= "javax.sql.* "%>
<%@ page import= "javax.naming.* "%>
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=UTF-8">
<title> myfirst </title>
</head>
<body>
<%
DataSource ds = null;
Connection conn =null;
Statement stmt =null;
try{
InitialContext ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:/comp/env/jdbc/ConnectionPool");
conn = ds.getConnection();
}
catch(Exception e)
{
e.printStackTrace();
}
if(conn!=null)
{
try{
stmt=conn.createStatement();
out.println(stmt);
String tsql = "insert into test1(t) values('5')";
out.println(tsql);
stmt.executeUpdate(tsql);
}
catch(Exception e)
{
e.printStackTrace();
}
}
%>
</body>
</html>
报错如下:
信息: Server startup in 478 ms
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'test1' 无效。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeUpdateInternal(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeUpdate(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at org.apache.jsp.test_jsp._jspService(test_jsp.java:93)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
我估计还是配置问题,eclipse现在如果只是访问简单的jsp文件没有问题,一涉及到数据库,我就配置不好,但是我的java类却是可以访问sql的,现在我已经试过将那三个jdbc驱动放在jre下的exc、eclipse项目下的lib、tomcat下的lib。
真的无语,求高手。整了一星期了
[解决办法]
url="jdbc:microsoft:sqlserver://localhost:1433;DtatbaseName=db_net"
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'test1' 无效。
到底哪个是数据库的实例名?
统一一下试试。。。
[解决办法]
这个test1在哪里用到呀?
[解决办法]
ava.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'test1' 无效。test1报错,肯定找不到这个东西。。看看这个有啥错呗
[解决办法]
"insert into test1(t) values('5')";这句话有问题,你确定你的sql在数据库能运行
[解决办法]
String tsql = "insert into test1(t) values('5')";
[解决办法]
换个表插入数据试下。
[解决办法]
你打开数据库,用sql试试,指不定都没有这张表。我觉得奇怪的是明明是test1的时候报错为啥没有执行out.println(tsql);。还有java输出语句不是System.out.println(tsql);吗。这样写没问题?
[解决办法]
String tsql = "insert into test1(t) values('5')"
[解决办法]
我看了仔细看了下代码,怎么觉得这么奇怪呢。。你不要用insert。你执行select。我还真没直接在jsp弄过insert。事实上我觉得直接在jsp上弄上这段代码就很奇怪,我才疏学浅了。你去找一个简单的示例看看,你这种方式弄web肯定有问题。不能都写在jsp上面
[解决办法]
insert into test1 (t) values ('5')
[解决办法]
String tsql = "insert into test1(t) values('5')";
你确定你的test1表中的t 是varchar吗? 先看下t 是varchar 还是number
你的('5')是对应varchar 的
[解决办法]
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();
你这样试试,如果执行没错,那就是insert的问题
[解决办法]
如果错了就是数据库配置的问题
[解决办法]
不要瞎猜一个一个的测试
[解决办法]
不要用java,你就用现在的jsp上面,查值,输出值!我不觉得是数据库配置的问题,你先测是不是数据配置的事情,如果能查表输出出来就不是数据库配置的事情。
[解决办法]
还有我这个的sql你看对不对。用正确的sql
[解决办法]
那就不是数据库配置的问题了,就是insert的问题,你可以慢慢改了
[解决办法]
一点点排查,确定是哪个环节的问题,如果怀疑是连接,那可以先用最简单的保证无错的select语句来排除
[解决办法]
尝试一下select * from test1
看有结果不
[解决办法]
转一圈
[解决办法]
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'test1' 无效。
test1这个表 在库中存在么 ?你可以一在查询分析器中运行一下
select * from test1 ;
或者 insert into test1(t) values('5') ;
看看有什么结果没有
[解决办法]
问题找到了,拼错了一个单词,url="jdbc:microsoft:sqlserver://localhost:1433;DtatbaseName=db_net"这里面的Dtat应该是Data,第一个写错了,后面都是复制的。悲剧啊,谢大家了!