在jsp编程中如何连接数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在jsp编程中如何连接数据库相关的知识,希望对你有一定的参考价值。

首先你的机器上得装有一款数据库,通常是Oracle,Ms sql,mysql等,不考虑框架等,jsp中主要是利用jdbc进行连接数据库
1,打开数据库服务(你已经设计好了数据库)
2,在class-path中添加相应数据库的连接jar包,
3.利用jdbc进行操作
例如:
JDBC - 环境设置:
请确认您已完成以下设置:
核心JAVA安装
SQL 或 MySQL数据库安装
除上述者外,需要建立一个数据库,为本程测试项目使用。假设这是EMP,在同一个数据库上创建表Employees。
创建JDBC应用程序:
参与建立一个JDBC应用程序,本教程中按六个步骤进行:
导入包:
这需要你有软件包包含了数据库编程所需的JDBC类。大多数情况下,使用import java.sql.* 就足够了,如下所示:
//STEP 1. Import required packages
import java.sql.*;

注册JDBC驱动程序:
这需要初始化驱动程序,这样就可以打开与数据库的通信信道。以下是代码片段实现这一目标:
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");

打开一个连接:
这需要使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个物理连接的数据库,如下所示:
//STEP 3: Open a connection
// Database credentials
static final String USER = "username";
static final String PASS = "password";
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);

执行一个查询:
这需要使用一个对象类型Statement或PreparedStatement构建,并提交一个SQL语句到数据库。如下:
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);

如果有一个SQL UPDATE,INSERT或DELETE语句,那么需要下面的代码片段:
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "DELETE FROM Employees";
ResultSet rs = stmt.executeUpdate(sql);

从结果集中提取数据:
这一步是必需的情况下,从数据库中获取数据。可以使用适当的ResultSet.getXXX()方法来检索的数据结果如下:
//STEP 5: Extract data from result set
while(rs.next())
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");

//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);


清理环境:
应该明确地关闭所有的数据库资源,对依赖于JVM的垃圾收集如下:
//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
参考技术A 用JDBC技术
创建数据库连接,分为以下几步:
1.装载并注册数据库的JDBC驱动程序
2.取得数据库连接
3.建立Statement 对象
4.准备并执行调用SQL语句
5.处理ResultSet中的记录集
6.释放资源
第一步
加载驱动程序
try //装载MySQL数据库驱动
Class.forName("com.mysql.jdbc.Driver");

catch(ClassNotFoundException e)

e.printStackTrace();

注意:在使用JDBC之前,要在文件前导入有关SQL的类即
import java.sql.*
第二步
取得数据库连接
try
String url="jdbc:mysql://localhost:3306/student;
String user="root";
String password="1234";
con=DriverManager.getConnection(url,user,password);

catch(SQLException e)

e.printStackTrace();

第三步
建立Statement 对象
try
Statement sql=con.createStatement();

catch(SQLException e)

e.printStackTrace();

第四步
执行各种SQL语句
try
ResultSet rs=sql.executeQuery(
"select * fromstudent");

catch(SQLException e)

e.printStackTrace();

第五步
获取查询结果
ResultSet rs=sql.executeQuery(
"select * fromstudent");
while(rs.next())

rs.getString(2)或者是rs.getString("name");
rs.getInt(3)或者是rs.getInt("age");

注意
只有select语句才会有结果集返回;
ResultSet对象一次只能看到一个数据行
使用next()方法走到下一数据行
获得一行数据后,ResultSet对象可以使用getXxx()方法获得字段值,将位置索引或字段名传递给get第六步
关闭创建的各个对象(后打开的先关)
rs.close();
sql.close();
con.close();Xxx方法()即可。
参考技术B 用JDBC技术
创建数据库连接,分为以下几步:
1.装载并注册数据库的JDBC驱动程序
2.取得数据库连接
3.建立Statement 对象
4.准备并执行调用SQL语句
5.处理ResultSet中的记录集
6.释放资源
第一步
加载驱动程序
try //装载MySQL数据库驱动
Class.forName("com.mysql.jdbc.Driver");

catch(ClassNotFoundException e)

e.printStackTrace();

注意:在使用JDBC之前,要在文件前导入有关SQL的类即
import java.sql.*
第二步
取得数据库连接
try
String url="jdbc:mysql://localhost:3306/student;
String user="root";
String password="1234";
con=DriverManager.getConnection(url,user,password);

catch(SQLException e)

e.printStackTrace();

第三步
建立Statement 对象
try
Statement sql=con.createStatement();

catch(SQLException e)

e.printStackTrace();

第四步
执行各种SQL语句
try
ResultSet rs=sql.executeQuery(
"select * from student");

catch(SQLException e)

e.printStackTrace();

第五步
获取查询结果
ResultSet rs=sql.executeQuery(
"select * from student");
while(rs.next())

rs.getString(2)或者是rs.getString("name");
rs.getInt(3)或者是rs.getInt("age");

注意
只有select语句才会有结果集返回;
ResultSet对象一次只能看到一个数据行
使用next()方法走到下一数据行
获得一行数据后,ResultSet对象可以使用getXxx()方法获得字段值,将位置索引或字段名传递给get第六步
关闭创建的各个对象(后打开的先关)
rs.close();
sql.close();
con.close();Xxx方法()即可。
参考技术C http://zhidao.baidu.com/question/165603856 推荐阅读

如何使用 jdbc 连接从数据库中检索数据并将其显示在 jsp 文本字段中

【中文标题】如何使用 jdbc 连接从数据库中检索数据并将其显示在 jsp 文本字段中【英文标题】:how to Retrieve data from database and display it in a jsp text fields using jdbc connection 【发布时间】:2014-05-10 10:49:22 【问题描述】:

我正在从数据库中检索数据并将其显示在 JSP 的表格中,但我不知道如何在文本字段中显示它。

例如

    当我搜索索引号时。 结果(姓名、地址、年龄)必须来自我的JSP 中的文本字段

我的代码:

public class S2 extends HttpServlet 


protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException 
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    Connection conn = null;
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "shoppingCart";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "root";
    String password = "";

    Statement st;
    try 
        Class.forName(driver).newInstance();
        conn = DriverManager.getConnection(url + dbName, userName, password);
        System.out.println("Connected!");
        String pid = request.getParameter("pid");

        ArrayList al = null;
        ArrayList pid_list = new ArrayList();
        String query = "select * from user where uid='" + pid + "' ";

        System.out.println("query " + query);
        st = conn.createStatement();
        ResultSet rs = st.executeQuery(query);

        while (rs.next()) 

            al = new ArrayList();

            out.println(rs.getString(1));
            out.println(rs.getString(2));
            out.println(rs.getString(3));
            out.println(rs.getString(4));
            out.println(rs.getString(5));


            al.add(rs.getString(1));
            al.add(rs.getString(2));
            al.add(rs.getString(3));
            al.add(rs.getString(4));
            al.add(rs.getString(5));


            System.out.println("al :: " + al);
            pid_list.add(al);
        


        request.setAttribute("piList", pid_list);
        RequestDispatcher view = request.getRequestDispatcher("/searchview.jsp");
        view.forward(request, response);
        conn.close();
        System.out.println("Disconnected!");
     catch (Exception e) 
        e.printStackTrace();
    

【问题讨论】:

到目前为止你尝试过什么?如果你搜索我的朋友,那里有很多教程:) Google 是您的朋友,您可以问他,尝试您所获得的任何信息,如果您遇到任何问题或异常,请发布到您的问题中。 this may help you 【参考方案1】:

确保您已在项目中包含 jdbc 驱动程序并“构建”它。那么:

    建立数据库连接并检索查询结果。

    返回查询结果并保存在ResultSet对象中。

    遍历对象,显示查询结果。

下面的示例代码详细说明了这一点。

String label = request.getParameter("label"); 
//retrieving a variable from a previous page

Connection dbc = null; //Make connection to the database
Class.forName("com.mysql.jdbc.Driver");
dbc = DriverManager.getConnection("jdbc:mysql://localhost:3306/works", "root", "root");

if (dbc != null) 

    System.out.println("Connection successful");

ResultSet rs = listresult.dbresult.func(dbc, label); 
//The above function is mentioned in the end. 
//It is defined in another package- listresult

while (rs.next()) 

%>
<form name="demo form" method="post">
    <table>
        <tr>
            <td>
                Label Name:
            </td>
            <td>
                <input type="text" name="label" 
                value="<%=rs.getString("lname")%>">
            </td>
        </tr>
    </table>
</form>
<%  %>


public static ResultSet func(Connection dbc, String x)

    ResultSet rs = null;
    String sql;
    PreparedStatement pst;
    try
    
        sql = "select lname from demo where label like '" + x + "'";
        pst = dbc.prepareStatement(sql);
        rs = pst.executeQuery();
     
    catch (Exception e) 
    
        e.printStackTrace();
        String sqlMessage = e.getMessage();
    
    return rs;

我试图使这个例子尽可能详细。如果有任何疑问。

【讨论】:

【参考方案2】:
<input type="text" value=<%=rs.getString("table_coloumn_name")%>></input>

【讨论】:

【参考方案3】:

将检索到的值添加到请求或会话对象中,并使用脚本和表达式在 JSP 页面上检索它。或者您也可以尝试使用 JSTL/EL,如下所示

在处理程序或 servlet 中,将从数据库中检索到的值添加到请求对象中

request.setAttribute(theValueFromDB, "value");

然后将页面转发或重定向到相应的 JSP。 在 JSP 页面中

<input type="text" value="$ requestScope.value">

【讨论】:

【参考方案4】:

您使用的是哪个数据库?例如,MySQL 和 MS Access 都有不同的方法连接到数据库。

如果可以建立连接,请执行以下操作

创建一个查询数据库的类对象 调用查询数据库的函数 返回查询结果并保存在mySqlQuery的一个对象中 现在检索行并在所需字段中显示每一列。

如果您有任何问题,我可以为您提供代码来解决它。

【讨论】:

我已经完成了,但是如果我发送给您并且您为我更正它,我会有点困惑 我正在使用 Mysql,但我还是有点困惑,如果我把它发给你,你能帮我解决吗 是的 Gayan,我会尽力为你做的,请把你的模型类(连接到 db 的类)发给我【参考方案5】:

while(!rs1.next() && !rs2.next())

            %>
            <td><input type="checkbox" name="pteam" value=<%=rs1.getString("ename")%>>emp_name:  </td>
            <%x++;st.close();con.close();%>

【讨论】:

以上是关于在jsp编程中如何连接数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jdbc 连接从数据库中检索数据并将其显示在 jsp 文本字段中

jsp怎样用jdbc连接mysql数据库

JSP网页如何连接数据库?

急!我用Java连接了数据库并读取了一个表中的数据,如何在jsp页面中以表格的形式输出查询的数据??谢谢

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

jsp怎样连接Oracle数据库