jsp数据库连接问题

jsp数据库连接问题,第1张

你这应该是一个用户注册程序吧。

首先确定一下你的程序逻辑:

当用户提交注册信息时首先使用CheckUser(userBean set)来判断要注册的用户是否已存在,如果不存在则接着调用Insert(userBean set )将用户注册信息保存到数据库中。如果你程序是按这个逻辑不处理的话自然的,这个程序会报如上错误。

原因:

当执行CheckUser(userBean set)后,程序会将数据库连接关闭,而当程序接着执行下面的Insert(userBean set )时,会因为之前奖数据库连接关闭而无法完成数据库 *** 作。

解决办法有二:

1、将CheckUser(userBean set)方法里的connclose(); 去掉;

2、你这里将获得连接资源的代码放在构造函数里,它只调用一次。因此你可以将数据连接代码使用一个新的方法来封装,每一个用到数据库连接的方法单独调用该方法。

如:

public Connection getConnection(){

try {

ClassforName("commicrosoftjdbcsqlserverSQLServerDriver");

} catch (ClassNotFoundException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

}

try {

thisconn = DriverManager

getConnection(

"jdbc:microsoft:sqlserver://localhost:1433;databasename=Web_Test","sa","sa");

} catch (SQLException e) {

// TODO 自动生成 catch 块//

eprintStackTrace();

}

return thisconn

}

这样你在方法里可通过下面的方法获取连接。

conn = getConnection();

因此你的CheckUser(userBean set)可改成如下:

public boolean CheckUser(userBean set){

try {

conn = getConnection(); //这里是给你修改的

pstm = connprepareStatement("select userPWD from userInfo where userName= ");

pstmsetString(1,setgetUserName());

rs = pstmexecuteQuery();

if (rsnext()) {

if (rsgetString(1)equals(setgetUserPassword())){

return true;

}

}

connclose();

pstmclose();

rsclose();

} catch (SQLException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

}

return false;

}

其它方法也是一样。

请问下是什么结构?用jdbc连接的话:

public class DBUtil {

private static String user;

private static String password;

private static String url;

static{

Properties prop=new Properties();

try {

ClassLoader classLoader=DBUtilclassgetClassLoader();

InputStream is=classLoadergetResourceAsStream("dbproperties");

propload(is);

user=propgetProperty("user");

password=propgetProperty("password");

url=propgetProperty("url");

ClassforName("commysqljdbcDriver");

} catch (Exception e) {

eprintStackTrace();

throw new RuntimeException("找不到加载类");

}

}

public static Connection getConnection()throws Exception{

Connection conn=null;

conn=DriverManagergetConnection(url,user,password);

return conn;

}

public static void close(Connection conn){

if(conn!=null){

try {

connclose();

} catch (SQLException e) {

eprintStackTrace();

}

}

}

public static void main(String[] args)throws Exception {

Systemoutprintln(DBUtilgetConnection());

}

}

如果是用SSH架构的话,用hibernate里面去配置就OK了!

eclipse,我用的是eclipse,也可以用其他的开发工具。

tomcat,tomcat是用来做服务器的,如果eclipse还没有配置tomcat服务器,就要先配置好tomcat服务器。

MySQL,本文用的是MySQL数据库,读者也可以尝试用其他的数据库,但是连接驱动就要换成相应数据库的连接驱动。

连接驱动 mysql-connector-java-3114-binjar,可以从网上下载。

方法/步骤

打开eclipse,菜单栏下,File-new,打开Dynamic Web Project,创建一个jsp project,为方便起见,本文直接在jsp页面里写java代码进行数据库的连接。。大部分网友应该都可以看懂这段代码的涵义,这里就不赘述了。

其中需要注意的是  String url="jdbc:mysql://localhost:3306/mydb"  其中的3306是MySQL安装时的端口号,默认的是3306,如果你安装MySQL时更改了端口号就要在这里填写你更改的端口号。下面是我的jsp文档

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@page import="javasqlConnection" %>

<%@page import="javasql" %>

<%@page import="javasqlDriverManager;" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ">

<html>

<head>

<meta >

<title>Insert title here</title>

</head>

<body>

<table border="1" align="center">

<tr>

<td>书名</td>

<td>作者</td>

</tr>

<%

String driverClass="commysqljdbcDriver";

String url="jdbc:mysql://localhost:3306/mydb";

String user="root";

String password="1234";

String a="zhangsan";

Connection conn;

try{

ClassforName(driverClass);

conn=DriverManagergetConnection(url,user,password);

Statement stmt=conncreateStatement();

String sql="select from books";

ResultSet rs=stmtexecuteQuery(sql);

while(rsnext()){

%>

<tr>

<td><%=rsgetString("bookname") %></td>

<td><%=rsgetString("writer") %></td>

</tr>

<%

}

}

catch(Exception ex){

exprintStackTrace();

}

%>

</table>

</body>

</html>

然后在这个project的WebContent\WEB-INF\lib的文件夹里添加之前提到的连接驱动 mysql-connector-java-3114-binjar,将其复制到lib的文件夹中。保存项目,然后运行,就会在网页中出现表格。

3

是不是很简单呢,希望这篇经验能够给大家带来方便。

END

注意事项

要确保在MySQL中存在mydb数据库,mydb中已创建books表格,不然会提示错误的。

jsp中加载jdbc驱动:

Java加载JDBC的实现方法:

通过调用ClassforName()方法可以显式地加载一个驱动程序。该方法的入口参数为要加载的驱动程序。例如:ClassforName("sunjdbcodbcJdbcOdbcDriver")语句加载了SUN 公司开发的JDBC-ODBC 桥接器。对数据库进行连接的时候,驱动管理器(DriverManager)会使用这个被加载的驱动程序。通过DriverManager 的getDriver()方法可以获得已经加载的驱动程序信息。程序代码要求:

1.编写useDBDriver 类的基本框架,在该类中仅包括main()方法,在main()方法中加载驱动程序。

2.程序代码如下:

public class useDBDriver

{

public static void main(String arg[])

{

try

{

//初始化并加载JDBC-ODBC 驱动程序

ClassforName("sunjdbcodbcJdbcOdbcDriver");

Enumeration enum=DriverManagergetDrivers();

//显示驱动程序信息

while(enumhasMoreElements())

{

Systemoutprintln(enumnextElement());

}

//处理加载数据库中可能出现的异常

}

catch(javalangException exec)

{

Systemoutprintln("加载数据库驱动程序出现异常");

}

}

}

3.因为程序中使用了JDBC 类和Enumeration 类,所以要引入的包有:

import javasql;

import javautil;

难得讲:

直接连接和关闭代码:

private static final String DRIVER = "commicrosoftsqlserverjdbcSQLServerDriver";// 驱动类

private static final String URL = "jdbc:sqlserver://localhost:1433;DataBaseName=paipaiDB";// 连接URL地址

private static final String USER = "sa";// 数据库用户名

private static final String PWD = "123";// 数据库用户密码

/

与数据库建立连接

@return

@throws ClassNotFoundException

@throws SQLException

/

public static Connection getCon() throws ClassNotFoundException,

SQLException {

Connection con = null;

ClassforName(DRIVER);

con = DriverManagergetConnection(URL, USER, PWD);

return con;

}

/

关闭所有与数据库的连接对象

@param res

结果集对象

@param pstat预编义对象

@param con连接对象

/

public static void closeAll(ResultSet res, PreparedStatement pstat,

Connection con) {

if (res != null) {

try {

resclose();

} catch (SQLException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

}

}

if (pstat != null) {

try {

pstatclose();

} catch (SQLException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

}

}

try {

if (con != null && !conisClosed()) {

conclose();

}

} catch (SQLException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

}

}

以上就是关于jsp数据库连接问题全部的内容,包括:jsp数据库连接问题、jsp系统怎么连接数据库、jsp怎么连接mysql数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10053668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存