我是用的tomcat连接的本地SQL 2008 数据库 表是在数据库中添加的 现在连接数据库已经成功了 但是通过网页添加数据就不行 求各位大神帮忙看看 求详细代码 谢谢
首先是testdb.jsp 我是通过这个页面访问数据库的
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head><body bgcolor="white">
<table border="5">
<tr>
<td><font face="黑体"><center>学号</center></font></td>
<td><font face="黑体"><center>姓名</center></font></td>
<td><font face="黑体"><center>年龄</center></font></td>
<td><font face="黑体"><center>班级</center></font></td>
<td><font face="黑体"><center>城市</center></font></td>
</tr>
<%
Connection conn = null;
Context initCtx = new InitialContext();
if (initCtx == null)
throw new Exception("不能获取Context!");
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object obj = (Object) ctx.lookup("jdbc/sqlserver");//获取连接池对象
DataSource ds = (javax.sql.DataSource) obj; //类型转换
conn = ds.getConnection();
Statement stmt = conn.createStatement();
String sql = "select * from stu";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
%>
<tr>
<td><center><%=rs.getString("id")%></center></td>
<td><center><%=rs.getString("name")%></center></td>
<td><center><%=rs.getString("age")%></center></td>
<td><center><%=rs.getString("classes")%></center></td>
<td><center><%=rs.getString("city")%></center></td>
</tr>
<%
}
rs.close();
stmt.close();
conn.close(); %>
</table>
<input type="button" name="bottom" value="添加新学生" onclick="javascript:window.location.href='add.jsp'">
</body>
</html>然后是add.jsp 添加页面<%@page import="javax.naming.InitialContext"%>
<%%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>add</title>
</head>
<body>
<form action="addinfo.jsp" method="post">
ID:
<input type="text" name="id">
<br>
<br>
Name:
<input type="text" name="name">
<br>
<br>
Age:
<input type="text" name="age">
<br>
<br>
Classes:
<input type="text" name="Classes">
<br>
<br>
City:
<input type="text" name="City">
<br>
<br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
接下来是 addinfo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%
String Id=new String(request.getParameter("Id").getBytes("utf-8"));
String Name = new String(request.getParameter("Name").getBytes("utf-8"));
String Age = new String(request.getParameter("Age").getBytes("utf-8"));
String Classes = new String(request.getParameter("Classes").getBytes("utf-8"));
String City = new String(request.getParameter("City").getBytes("utf-8"));
connDb.update("insert into Stu (Id,Name,Age,Classes,City) values ('"+Id+"','"+Name+"','"+Age+"','"+Classes+"','"+Ctiy+"')");
response.sendRedirect("testdb.jsp");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'addinfo.jsp' starting page</title>
</head>
<body>
添加成功!
<br>
</body>
</html>
这里的insert语句 总是执行错误
最后是一个connDb的java类package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class connDb {
private static Connection con = null;
private static Statement stmt = null;
private static ResultSet rs = null;
public static void startconn() {
//连接数据库方法
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//创建连接数据库中间件
try {
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=Amy", "sa", "1234567890");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void endconn() throws SQLException {
//关闭连接
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (con != null) {
con.close();
con = null;
}
}
public static void update(String sql) throws SQLException {
//数据库更新
startconn();
stmt = con.createStatement();
stmt.executeUpdate(sql);
endconn();
}
} 以上代码很多都是借鉴别人的 数据库jsptomcatsqlserver
首先是testdb.jsp 我是通过这个页面访问数据库的
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head><body bgcolor="white">
<table border="5">
<tr>
<td><font face="黑体"><center>学号</center></font></td>
<td><font face="黑体"><center>姓名</center></font></td>
<td><font face="黑体"><center>年龄</center></font></td>
<td><font face="黑体"><center>班级</center></font></td>
<td><font face="黑体"><center>城市</center></font></td>
</tr>
<%
Connection conn = null;
Context initCtx = new InitialContext();
if (initCtx == null)
throw new Exception("不能获取Context!");
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object obj = (Object) ctx.lookup("jdbc/sqlserver");//获取连接池对象
DataSource ds = (javax.sql.DataSource) obj; //类型转换
conn = ds.getConnection();
Statement stmt = conn.createStatement();
String sql = "select * from stu";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
%>
<tr>
<td><center><%=rs.getString("id")%></center></td>
<td><center><%=rs.getString("name")%></center></td>
<td><center><%=rs.getString("age")%></center></td>
<td><center><%=rs.getString("classes")%></center></td>
<td><center><%=rs.getString("city")%></center></td>
</tr>
<%
}
rs.close();
stmt.close();
conn.close(); %>
</table>
<input type="button" name="bottom" value="添加新学生" onclick="javascript:window.location.href='add.jsp'">
</body>
</html>然后是add.jsp 添加页面<%@page import="javax.naming.InitialContext"%>
<%%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>add</title>
</head>
<body>
<form action="addinfo.jsp" method="post">
ID:
<input type="text" name="id">
<br>
<br>
Name:
<input type="text" name="name">
<br>
<br>
Age:
<input type="text" name="age">
<br>
<br>
Classes:
<input type="text" name="Classes">
<br>
<br>
City:
<input type="text" name="City">
<br>
<br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
接下来是 addinfo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%
String Id=new String(request.getParameter("Id").getBytes("utf-8"));
String Name = new String(request.getParameter("Name").getBytes("utf-8"));
String Age = new String(request.getParameter("Age").getBytes("utf-8"));
String Classes = new String(request.getParameter("Classes").getBytes("utf-8"));
String City = new String(request.getParameter("City").getBytes("utf-8"));
connDb.update("insert into Stu (Id,Name,Age,Classes,City) values ('"+Id+"','"+Name+"','"+Age+"','"+Classes+"','"+Ctiy+"')");
response.sendRedirect("testdb.jsp");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'addinfo.jsp' starting page</title>
</head>
<body>
添加成功!
<br>
</body>
</html>
这里的insert语句 总是执行错误
最后是一个connDb的java类package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class connDb {
private static Connection con = null;
private static Statement stmt = null;
private static ResultSet rs = null;
public static void startconn() {
//连接数据库方法
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//创建连接数据库中间件
try {
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=Amy", "sa", "1234567890");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void endconn() throws SQLException {
//关闭连接
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (con != null) {
con.close();
con = null;
}
}
public static void update(String sql) throws SQLException {
//数据库更新
startconn();
stmt = con.createStatement();
stmt.executeUpdate(sql);
endconn();
}
} 以上代码很多都是借鉴别人的 数据库jsptomcatsqlserver
type Exception reportmessage Unable to compile class for JSP: description The server encountered an internal error that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 10 in the jsp file: /addinfo.jsp
connDb cannot be resolved
7: String Age = new String(request.getParameter("Age").getBytes("utf-8"));
8: String Classes = new String(request.getParameter("Classes").getBytes("utf-8"));
9: String City = new String(request.getParameter("City").getBytes("utf-8"));
10: connDb.update("insert into Stu (Id,Name,Age,Classes,City) values ('"+Id+"','"+Name+"','"+Age+"','"+Classes+"','"+Ctiy+"')");
11: response.sendRedirect("testdb.jsp");
12: %>
13: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
An error occurred at line: 10 in the jsp file: /addinfo.jsp
Ctiy cannot be resolved to a variable
7: String Age = new String(request.getParameter("Age").getBytes("utf-8"));
8: String Classes = new String(request.getParameter("Classes").getBytes("utf-8"));
9: String City = new String(request.getParameter("City").getBytes("utf-8"));
10: connDb.update("insert into Stu (Id,Name,Age,Classes,City) values ('"+Id+"','"+Name+"','"+Age+"','"+Classes+"','"+Ctiy+"')");
11: response.sendRedirect("testdb.jsp");
12: %>
13: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:443)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 logs.
String Id=new String(request.getParameter("id").getBytes("utf-8"));
String Name = new String(request.getParameter("name").getBytes("utf-8"));
String Age = new String(request.getParameter("age").getBytes("utf-8"));
String Classes = new String(request.getParameter("Classes").getBytes("utf-8"));
String City = new String(request.getParameter("City").getBytes("utf-8")); 试试