本学期的jsp综合实验做的是关于数据库连接的在线投票系统,在这个过程中最重点的就是如何通过jdbc连接调用mysql语句了。
在这里总结下关键点的步骤如下:
1. 加载JDBC驱动程序;
2. 负责管理JDBC驱动程序的类 DriverManager 会识别加载的驱动程序,用 DriverManager 类的方法 getConnection()来创建一个数据库连接类的实例对象;
3. 获取Connection对象的实例,用Connection对象的方法创建一个 Statement 对象实例,执行标准的SQL语句,对数据库、表进行相关操作;
4. 返回的结果用 ResultSet 类来处理。
其中的关键代码:
<p><strong>1.数据库联接</strong></p><p><strong>使用ConnectDB类写getConn()方法来实现,</strong></p><p><strong>关键代码如下:</strong></p>
<pre name="code" class="java">
public class ConnectDB {
public static Connection getConn() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/vote";
String user = "root";
String pwd = "root";
Connection conn = DriverManager.getConnection(url, user, pwd);
return conn;
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
}
2.发起投票
首先获取设置主题的参数,然后把每个选项@分割,把选项和内容用冒号分开,insert到数据库,关键代码如下:<strong></strong><pre name="code" class="java">protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("gb2312");
String name = request.getParameter("title");
String[] question = request.getParameterValues("question");
String[] answer = request.getParameterValues("answer");
String[] after_answer = new String[question.length];
int tmp = 0;
for (int i = 0; i < question.length; i++) {
after_answer[i] = "";
for (int j = 0; j < answer.length / question.length; j++) {
after_answer[i] += ((char) ('A' + j)) + ":" + answer[tmp++]
+ "@";
}
}
Connection conn = ConnectDB.getConn();
Database db = new Database(conn);
try {
db.addvote(name, question, after_answer);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
RequestDispatcher rd = request.getRequestDispatcher("surveyManage.jsp");
request.setAttribute("info", "Itrue");
rd.forward(request, response);
}