难得讲:
直接连接和关闭代码:
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();
}
}
用JDBC技术\x0d\创建数据库连接,分为以下几步:\x0d\1装载并注册数据库的JDBC驱动程序\x0d\2取得数据库连接\x0d\3建立Statement 对象\x0d\4准备并执行调用SQL语句\x0d\5处理ResultSet中的记录集\x0d\6释放资源\x0d\第一步\x0d\加载驱动程序\x0d\ try{ //装载MySQL数据库驱动\x0d\ ClassforName("commysqljdbcDriver");\x0d\ }\x0d\ catch(ClassNotFoundException e) \x0d\ { \x0d\ eprintStackTrace();\x0d\ }\x0d\注意:在使用JDBC之前,要在文件前导入有关SQL的类即\x0d\ import javasql\x0d\第二步\x0d\取得数据库连接\x0d\try{\x0d\String url="jdbc:mysql://localhost:3306/student;\x0d\String user="root";\x0d\String password="1234";\x0d\con=DriverManagergetConnection(url,user,password);\x0d\}\x0d\catch(SQLException e)\x0d\{\x0d\ eprintStackTrace();\x0d\ }\x0d\第三步\x0d\建立Statement 对象\x0d\try{\x0d\ Statement sql=concreateStatement();\x0d\ }\x0d\catch(SQLException e)\x0d\ {\x0d\ eprintStackTrace();\x0d\ }\x0d\第四步\x0d\执行各种SQL语句\x0d\try{\x0d\ ResultSet rs=sqlexecuteQuery(\x0d\ "select from student");\x0d\ }\x0d\catch(SQLException e)\x0d\ {\x0d\ eprintStackTrace();\x0d\ }\x0d\第五步\x0d\获取查询结果\x0d\ ResultSet rs=sqlexecuteQuery(\x0d\ "select from student");\x0d\ while(rsnext())\x0d\ {\x0d\ rsgetString(2)或者是rsgetString("name");\x0d\ rsgetInt(3)或者是rsgetInt("age");\x0d\ }\x0d\注意\x0d\只有select语句才会有结果集返回;\x0d\ResultSet对象一次只能看到一个数据行\x0d\使用next()方法走到下一数据行\x0d\获得一行数据后,ResultSet对象可以使用getXxx()方法获得字段值,将位置索引或字段名传递给get第六步\x0d\关闭创建的各个对象(后打开的先关)\x0d\ rsclose();\x0d\ sqlclose();\x0d\ conclose();Xxx方法()即可。
你这应该是一个用户注册程序吧。
首先确定一下你的程序逻辑:
当用户提交注册信息时首先使用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;
}
其它方法也是一样。
以上就是关于JSP怎样链接数据库全部的内容,包括:JSP怎样链接数据库、在jsp编程中如何连接数据库、jsp数据库连接问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)