如何使用 jdbc 连接从数据库中检索数据并将其显示在 jsp 文本字段中
Posted
技术标签:
【中文标题】如何使用 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();%>
【讨论】:
以上是关于如何使用 jdbc 连接从数据库中检索数据并将其显示在 jsp 文本字段中的主要内容,如果未能解决你的问题,请参考以下文章
JDBC:如何从结果集中检索 SQL COUNT 函数的结果?