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连接数据库方法(详细的)的主要内容,如果未能解决你的问题,请参考以下文章

JSP中使用JDBC连接MySQL数据库的详细步骤

怎么把MySQL数据库的内容在jsp界面中显示出来,并且连接数据库部分和界面要分开写

jsp连接mysql数据库后增删改查怎么写

如何纠正jsp中的数据库连接错误?

jsp中连接数据库,可以直接写在JSP文件里,也可以,写在javabean,和servlet中,哪一种方法更好一些

jsp导入和导出excel的代码(jsp连接excel的方法)