从表(HTML)中获取输入变量,并将值作为数据库表的变量名提供

本教程将介绍从表(HTML)中获取输入变量,并将值作为数据库表的变量名提供的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

从表(HTML)中获取输入变量,并将值作为数据库表的变量名提供 教程 第1张

问题描述

我想为患者数据库系统创建一个表单。然后,我将为表单的每个文本框提供一些输入数据,这些数据将存储在MySQL数据库中。

我按如下方式编写了一个JSP文件

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>

<%@ page import="java.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
 <table>
<tr><td>Pid</td><td><input type="text" name="pid" required /></td></tr>
<tr><td>Name</td><td><input type="text" name="patientname" required /></td></tr>
<tr><td>Address</td><td><input type="text" name="patientaddress" ></td></tr>
<tr><td>Phone number</td><td><input type="number" name="Ph" required /></td></tr>
<tr><td>Email</td><td><input type="email" name="email" required /></td></tr>
<tr><td>Type</td><td><input type="text" name="patienttype" ></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="register"></td></tr>

</table>

<%
  try {
 
 Class.forName("com.mysql.cj.jdbc.Driver");
 Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hospitalm","root","1234");
 out.println ("database successfully opened.");
 String sql = "INSERT INTO patient (pid, pname, address, phone, email_id,ptype) values (?, ?, ?,?,?,?)";
 PreparedStatement statement = con.prepareStatement(sql);
 statement.setString(1, Pid);
 statement.setString(2, Name);
 statement.setString(3, "Forrest");
 statement.setDouble(4, 664208158);
 statement.setString(5, "ava@gmail.com");
 statement.setString(6,"G");
 int row = statement.executeUpdate();
 if (row > 0) {
  System.out.println("One row inserted.");
 }
  }
  catch(SQLException e) {
 out.println("SQLException caught: " +e.getMessage());
  }


%>
</body>
</html>

这两行引发错误

 statement.setString(1, Pid);
 statement.setString(2, Name);

如果我输入一些值,如PID为‘P101’,名称为‘John’,那么我可以轻松地在数据库Hospital italm上输入记录。

但是如果我尝试PID和NAME这两个表的变量名,

<tr><td>Pid</td><td><input type="text" name="pid" required /></td></tr>
<tr><td>Name</td><td><input type="text" name="patientname" required /></td></tr>

我收到错误。

我怎么解决此问题?

jsp

推荐答案不会自动将请求参数绑定到JAVA变量,这正是您在此尝试执行的操作。

获取参数需要直接查询请求对象。类似于:

statement.setString(1, request.getParameter("Pid"));
statement.setString(2, request.getParameter("Name"));

附录:

关于DOUBLE(或其他非字符串),您可以做两件事。

一,可以在飞翔上折算:

statement.setDouble(4, Double.parseDouble(requests.getParameter("phone")));

其次,您可以依靠SQL驱动程序为您完成此操作。

statement.setString(4, requests.getParameter("phone"));

JDBC中的&quot;setXXX&quot;基于您正在设置的值,而不是基于数据库中列的数据类型。不可避免的是,在大多数情况下,无论您在JDBC语句中设置什么,都会在将其传送到数据库之前转换为字符串。因此,您只需使用setString并完成它,然后让驱动程序/db找出它。

无论哪种方式,如果您发送格式不正确的数据(即电话号码的&QOOT;TOM&QOOT;),您都会从Double.parseDouble获得异常,或者当DB在插入期间尝试转换它时。但这与简单地设置参数是两个不同的问题。

好了关于从表(HTML)中获取输入变量,并将值作为数据库表的变量名提供的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。