jsp连接数据库方法(详细的)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp连接数据库方法(详细的)相关的知识,希望对你有一定的参考价值。
我是菜鸟!看了几天JSP连接数据库方面的书了!仍是不会!请各位高手详细点说吧.就是需不需要建个数据库啊 什么那个数据源什么的!然后写代码连接!不要上来就是连接代码啊 我已经看的头晕了555555!(我用的是SQL server 2000)最好先建个数据库!然后连接它!
上面的给出了jsp内嵌java的最初模式,现在一般是三层结构了即MVC结构,就这个例子我来给你解释下是怎么做的,java对连接数据库提供了统一的接口,各个数据库厂商根据提供的接口规范开发自己的连接方法顺序如下:1、用Class.forName()方法加载驱动:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 黑体部分为数据库厂商自己开发的驱动。2、定义好连接数据库的url地址,连接串String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";黑体部分为固定写法不用理会。回到你最初的问题,如何创建数据库,这里你可以去baidu下每个数据库创建的方法,一般数据库安装的时候都有默认的数据库名,和对应的系统管理员工号和密码,DatabaseName=pubs这里说明sql serv 2000中建立了一个名字叫pubs的数据库jdbc:microsoft:sqlserver://localhost:1433固定写法唯一不同的是1433端口号,可能你在安装sql serv 2000的时候改变了该端口号为1500那么这里就应该为jdbc:microsoft:sqlserver://localhost:15003、定义好DatabaseName=pubs的登录用户名和密码 String user="sa";用户名String password="";密码4、创建Connection对象,通过调用DriverManager.getConnection方法获得。 Connection conn= DriverManager.getConnection(url,user,password);黑体部分就是你定义好的连接串,用户名,密码,不可改变顺序。到这里为止数据库就连接上了,但是连接好了数据库还要做点什么,比如打印出来,接下看。5、通过获得的Connection对象conn创建Statement 对象stmtStatement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);黑体部分是定义ResultSet的一些属性的,具体含义可以参考JDK的api。6、定义好你准备取得数据的sql语句,比如下面 select * from test说明想从test表中取得所有的数据,关于sql语句可以去查找相关数据库资料。 String sql="select * from test";定义好语句后,就用上一步创建好的Statement 对象stmt来执行这个sql语句,并返回一个ResultSet对象。
ResultSet rs=stmt.executeQuery(sql);执行完这步后rs中已经取得了test表所有的数据,那么接下来要展现在网页上。7、rs.next()对你取得的记录集做一个循环直到没有值为止,rs.getString(1)代表你test表中的第一个字段rs.getString(2)代表你test中的第二个字段,如果还有更多字段可以继续rs.getString(3)..rs.getString(N) while(rs.next()) %>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%%>8、当所有数据展现完毕,调用close()方法将所有资源关闭。 rs.close();
stmt.close();
conn.close();回顾下大致过程:加载驱动 Class.forName();定义好相关的数据,调用DriverManager.getConnection(driver,user,password)获得一个数据库连接conn通过conn创建Statement对象stmt,conn.createStatement();通过stmt执行定义好的sql语句获得数据集ResultSet rs=stmt.executeQuery(“select * from test”);通过rs.next()方法循环遍历数据集的数据,通过rs.getString(1)获得第一条数据的第一个字段内容,这里要注意的是getString是对应数据库是字符类型,如果test表的第一个字段不是字符类型则用rs.getInt(1)获得。展现完毕后关闭所有资源conn stmt rs close方法。 参考技术A 在界面上连接数据库的操作是不对的。我建议你写一个类来专门连接数据库。在页面写Java代码,入侵性太高了,而且如果是这样发布到服务器去,很不安全。我给你个一Java类连接数据库的源码。可以直接建一个类把这些粘贴进去。其他Java类全部继承这个类。package com.comm;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;/*
* 父类:DAO
* */
public class BaseDao
private Connection con;
private PreparedStatement ps;
private ResultSet rs; // 连接
public void getCon() throws ClassNotFoundException, SQLException
String conStr = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=OPPO_Shopping"; // 加载驱动程序
String classStr = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
Class.forName(classStr);
con = DriverManager.getConnection(conStr, "sa", "sasa");
// 关闭
public void closeCon()
try
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (con != null)
con.close();
catch (Exception e)
e.printStackTrace();
// 查询
public ResultSet executeQuery(String sql, Object... p)
try
if (con == null || con.isClosed())
this.getCon();
ps = con.prepareStatement(sql);
if (p != null)
for (int i = 0; i < p.length; i++)
ps.setObject(i + 1, p[i]);
return ps.executeQuery();
catch (Exception e)
e.printStackTrace();
return null;
//增删改
public int executeUpdate(String sql, Object... p)
try
if (con == null || con.isClosed())
this.getCon();
ps = con.prepareStatement(sql);
if (p != null)
for (int i = 0; i < p.length; i++)
ps.setObject(i + 1, p[i]);
return ps.executeUpdate();
catch (Exception e)
e.printStackTrace();
return 0;
finally
closeCon();//关闭数据库
//分页
public Map page(String sql, Integer page, Integer size, Object... p) throws Exception, SQLException
Map map = new HashMap();
//------------------求页数--------------------------
ResultSet rs = null;
if (con == null)
getCon(); //默认是仅向前,可以后退,大步向前
ps = con.prepareStatement(sql,1004,1007);
if (p != null)
for (int i = 0; i < p.length; i++)
ps.setObject(i + 1, p[i]); rs = ps.executeQuery(); //下面三句话要先改con.prepareStatement(sql,1004,1007);
rs.first();
rs.last();
int count = rs.getRow(); //求总条数
int pageCount = count % size ==0 ? count/size : count/size+1; //总页数
map.put("pageCount", pageCount);
//------------------------求总页数结束----------------//
//--------------------取从第几条开始,到第几条结束------------//
ps.setMaxRows(page*size); //到哪条结束
rs = ps.executeQuery();
rs.absolute( (page-1)*size); //从哪条开始
//--------------------分页结束------------------------------//
map.put("rs", rs);
return map; 参考技术B 我收藏的,希望给个满意 全面解析JSP连接各类数据库大全
--------------------------------------------------------------------------------
2006-04-05 来源:ChinaITLab 作者:ChinaITLab
一、jsp连接Oracle8/8i/9i数据库(用thin模式)
testoracle.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为你的数据库的SID
String user="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
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();
%>
</body>
</html>
二、jsp连接Sql Server7.0/2000数据库
testsqlserver.jsp如下:
<%@ 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=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
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();
%>
</body>
</html>
三、jsp连接DB2数据库
testdb2.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
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();
%>
</body>
</html>
四、jsp连接Informix数据库
testinformix.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
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();
%>
</body>
</html>
五、jsp连接Sybase数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/tsdata";
//tsdata为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
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();
%>
</body>
</html>
六、jsp连接MySQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
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();
%>
</body>
</html>
七、jsp连接PostgreSQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/soft"
//soft为你的数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
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();
%>
</body>
</html> 参考技术C 你可以加我我远程帮你连接
JSP MYSQL 连接池的配置,高手来QQ***********在线等
参考技术A 分类: 电脑/网络 >> 程序设计 >> 其他编程语言问题描述:
JSP MYSQL 连接池的配置,高手来QQ***********在线等详细哦
解析:
Jboss数据库连接池
wwx 为数据库名
UserInfor为表名
数据库用户名和密码分别为:root root
参考 matrix/translation/Wiki.jsp?page=J2EEEJB_JbossJDBC
(该blog 包括几个主要数据库的连接)
MySQL是一个开放源代码的数据库,有很多开源项目和小型的社团都在使用它。
一 把mysql-connector-java-3.1.11-bin.jar复制到/server/default/lib目录下,
(需要mysql-connector-java-3.0.16-ga.zip包 将里面的jar文件取出)
二 再把/docs/examples/jca/mysql-ds.xml复制到/server/default/deploy目录下。修改mysql-ds.xml文件,设置为 .mysql.jdbc.Driver再把设置为jdbc:mysql/,其中是数据库主机名是数据库名。
例:<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysqllocalhost:3306/wwx</connection-url>wwx
<driver-class>.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
</local-tx-datasource>
</datasources>
注意:如果localhost不行 就用127.0.0.1 这个一定没问题!
还有就是如果数据库没有密码!那么就这样<password></password>
三 然后需要设置standardjaws.xml (或 jaws.xml 注: \server\default\conf目录下)文件的和元素:
<jaws>
<datasource>java:/MySqlDS</datasource>
<type-mapping>mySql</type-mapping>
。。。。。。。
</jaws>
四 同样也需要把standardjbosscmp-jdbc.xml (或 jbosscmp-jdbc.xml文件 注: \server\default\conf目录下)的 和 元素设置为下面这样:
<jbosscmp-jdbc>
<defaults>
<datasource>java:/MySqlDS</datasource>
<datasource-mapping>mySql</datasource-mapping>
</defaults> </jbosscmp-jdbc>
说明:<datasource-mapping>mySql</datasource-mapping>在我的Jboss里面是被注释掉的,但我把拿回来! 就是把 <----和------ 都删掉!
五 最后再修改login-config.xml(\server\default\conf目录下)文件来使用MySQL:
<application-policy name = "MySqlDbRealm">
<authentication>
<login-module code = ".jboss.resource.security.ConfiguredIdentityLoginModule" flag = "required">
<module-option name ="principal">wwx</module-option>
<module-option name ="userName">root</module-option>
<module-option name ="password">root</module-option>
<module-option name=managedConnectionFactoryName> jboss.jca:service=LocalTxCM,name=MySqlDS
</module-option>
</login-module>
</authentication>
</application-policy>
说明:这段代码就直接 copy到login-config.xml里面就ok!不知道往哪放吗?
嘿嘿,就放在<policy> 下面吧!
还有就是如果数据库没有密码!那么就这样<module-option name ="password"></module-option>
六 修改了mysql-ds.xml, standardjaws.xml, standardjbosscmp-jdbc.xml,和 login-config.xml 文件就可以在Jboss上使用MySQL了。
七 调试代码
在jboss-4.0.2/server/default/deploy下 建个文件夹 : test.war
里面test.jsp, 代码如下!
<%@pageimport="javax.naming.*"%>
<%@pageimport="javax.sql.*"%>
<%@pageimport="java.sql.*"%>
<%
try
Context ctx = new InitialContext(); 得到初始化上下文
Object obj = ctx.lookup("java:/MySqlDS");查找连接池
DataSource ds = (DataSource) obj;转换成DataSource
Connection connect = ds.getConnection();从连接池中得到一个连接
Statement stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery("select * from num");这是你的数据库的表噢!
while(rs.next())
out.println(rs.getObject("NO"));取出一个字段
catch (NamingException e)
e.printStackTrace();
catch(SQLException e1)
e1.printStackTrace();
out.flush();
out.close();
%>
以上是关于jsp连接数据库方法(详细的)的主要内容,如果未能解决你的问题,请参考以下文章
怎么把MySQL数据库的内容在jsp界面中显示出来,并且连接数据库部分和界面要分开写