包含 MYSQL 数据库功能的 JSP 的源代码
发布时间:2023-07-21 14:02:00 所属栏目:教程 来源:
导读:最近研究了jsp的数据库操作问题。本来我是要拿oracle数据库来测试的。但是由于机子的内存限制,就换成了mysql数据库了。
第一次用jsp编数据库的连接,发现问题还真不少。刚开始是jdbc配置就有问题,后来数据库连
第一次用jsp编数据库的连接,发现问题还真不少。刚开始是jdbc配置就有问题,后来数据库连
最近研究了jsp的数据库操作问题。本来我是要拿oracle数据库来测试的。但是由于机子的内存限制,就换成了mysql数据库了。 第一次用jsp编数据库的连接,发现问题还真不少。刚开始是jdbc配置就有问题,后来数据库连接好了,中文设置也是个问题。后来还有sql语句的写法问题出现了不少。经过三天的努力,这些问题都给解决掉了。 下面把我这三天测试的代码写给大家看看: 第一个是javabean的数据库的连接代码,文件名字是LoginData.java: package data; import java.sql.*; public class LoginData{ //定义mysql的连接地址 //String url="jdbc:odbc:logindemo"; Connection conn=null; //Statement stmt=null; //DatabaseMetaData dbmd=null; public LoginData(){ this.connect(); } public Connection getConn(){ return this.conn; } public boolean connect(){ try{ //使用JDBC桥创建数据库连接 Class.forName("org.gjt.mm.mysql.Driver").newInstance(); //使用DriverManager类的getConnection()方法建立连接 //第一个参数定义用户名,第二个参数定义密码 this.conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/logindemo?useUnicode=true&characterEncoding=gb2312","root","123456"); //stmt=conn.createStatement(); //dbmd=conn.getMetaData(); }catch(Exception ex){ ex.printStackTrace(); return false; } return true; } } 下面是测试代码的界面代码dbcode.jsp: <%@ page contentType="text/html; charset=gb2312" pageEncoding="GB2312" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script type="text/JavaScript"> <!-- function checknull() { if(document.form1.id.value==null){ document.form1.id.value=1; } } //--> </script> </head> <body> <jsp:useBean id="loginData" scope="page" class="data.LoginData"/> <% request.setCharacterEncoding("gb2312"); try{ Connection conn=loginData.getConn(); Statement stmt=conn.createStatement(); String sql="select * from userinfo"; ResultSet rs=stmt.executeQuery(sql); rs.last(); int id=rs.getInt(1); session.setAttribute("id",id+1); rs.close(); stmt.close(); conn.close(); }catch(Exception e){ e.printStackTrace(); } %> <p>数据库的操作:</p> <form id="form1" name="form1" method="post" action="createtable.jsp"> <label> <input name="createtable" type="submit" id="createtable" value="创建表:userinfo" /> <%=session.getAttribute("userinfo")%> <input name="insertnum" type="submit" id="insertnum" value="向表插入如下数据" /><%=session.getAttribute("insertsql")%> <input name="inserttennum" type="submit" id="inserttennum" value="插入10条数据" /> <%=session.getAttribute("insertten")%><br /> </label> <table width="664" height="86" border="2"> <tr> <td width="168" height="41">id</td> <td width="223">学号</td> <td width="249">姓名</td> </tr> <tr> <td height="35" align="center" valign="middle"><input name="id" type="text" id="id" onblur="checknull" value="<%=session.getAttribute("id")%>" /></td> <td align="center" valign="middle"><label> <input name="xuehao" type="text" id="xuehao" /> _1~10 </label></td> <td align="center" valign="middle"><label> <input name="name" type="text" id="name" /> _1~10 </label></td> </tr> </table> <p>姓名: <input name="selectnametext" type="text" id="selectnametext" /> <input name="selectname" type="submit" id="selectname" value="查询数据" /> 姓名: <input name="deletename" type="text" id="deletename" /> <input name="deletenum" type="submit" id="deletenum" value="删除数据" /> <%=session.getAttribute("deletenames")%></p> <p>学号: <input name="xuehao2" type="text" id="xuehao2" /> 姓名: <label> <input name="name2" type="text" id="name2" /> <input name="select_name" type="submit" id="select_name" value="查询" /> </label> <input name="updatanum" type="submit" id="updatanum" value="修改" /> </p> <% if(request.getAttribute("data")!=null){ String[][] data=(String[][])request.getAttribute("data"); out.println("查询结果显示如下:"); if(data[0].length>1){ out.print("<table border='2' width='70%'>"); out.print("<tr><td>序号</td><td>学号</td><td>姓名</td></tr>"); for(int i=0;i<data.length;i++){ out.print("<tr>"); for(int j=0;j<3;j++){ out.print("<td>"+ data[i][j] +"</td>"); } } out.print("</table>"); }else{ out.println(data[0][0]); } } %> </form> <p> </p> <p> </p> </body> </html> 下面是上面的界面调用的jsp页面来处理数据库的代码,包括创建表,表的增删该等操作: <%@ page contentType="text/html; charset=gb2312" pageEncoding="GB2312" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <body> <jsp:useBean id="loginData" scope="page" class="data.LoginData"/> <% request.setCharacterEncoding("gb2312"); %> <% //向数据库里创建表的代码 String createtable=request.getParameter("createtable"); if(createtable!=null){ try{ String sql="create table userinfo(id int primary key auto_increment,xuehao varchar(20),name varchar(20));"; Connection conn=loginData.getConn(); Statement stmt=conn.createStatement(); stmt.execute(sql); session.setAttribute("userinfo","表userinfo创建成功!"); stmt.close(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); session.setAttribute("userinfo","表userinfo已经创建过了!"); } } %> <% //向数据库里的表添加数据的代码 String insertnum=request.getParameter("insertnum"); if(insertnum!=null){ try{ String xuehao=request.getParameter("xuehao"); String name=request.getParameter("name"); String insertsql="insert into userinfo(xuehao,name) values(?,?)"; Connection conn=loginData.getConn(); PreparedStatement pstmt=conn.prepareStatement(insertsql) ; pstmt.setString(1,xuehao); pstmt.setString(2,name); pstmt.execute(); session.setAttribute("insertsql","成功插入一条数据"); pstmt.close(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); session.setAttribute("insertsql","插入数据不成功,请检查后重新插入"); } } %> <% //批量添加数据 String inserttennum=request.getParameter("inserttennum"); if(inserttennum!=null){ try{ String xuehao=request.getParameter("xuehao"); String name=request.getParameter("name"); Connection conn=loginData.getConn(); Statement stmt=conn.createStatement(); int j=100000; for(int i=0;i<j;i++){ String insertsql="insert into userinfo(xuehao,name) values('"+ xuehao + i + "','"+ name + i +"')"; stmt.execute(insertsql); } session.setAttribute("insertten","成功插入"+ j +"条数据"); conn.close(); stmt.close(); }catch(Exception ex){ ex.printStackTrace(); session.setAttribute("insertten","插入数据不成功,请检查后重新插入"); } } %> <% //查询表的数据代码 String selectname=request.getParameter("selectname"); String[][] data; if(selectname!=null){ try{ Connection conn=loginData.getConn(); Statement stmt=conn.createStatement(); ResultSet rs; String selectnametext=request.getParameter("selectnametext"); String sqlcount="select count(*) from userinfo where name like '%" + selectnametext +"%'"; rs=stmt.executeQuery(sqlcount); rs.next(); int rowCount=rs.getInt(1); if(rowCount>0){ data=new String[rowCount][3]; String sql="select * from userinfo where name like '%" + selectnametext +"%'"; rs=stmt.executeQuery(sql); int row=0; while(rs.next()){ for(int i=0;i<3;i++){ data[row][i]=rs.getString(i+1); } row++; } }else{ data=new String[1][1]; data[0][0]="找不到与"+ selectnametext + "相关内容"; } request.setAttribute("data",data); conn.close(); stmt.close(); rs.close(); }catch(Exception ex){ ex.printStackTrace(); } } %> <% //删除数据代码 String deletenum=request.getParameter("deletenum"); if(deletenum!=null){ try{ String deletename=request.getParameter("deletename"); Connection conn=loginData.getConn(); Statement stmt=conn.createStatement(); String deletesql="delete from userinfo where name like '%"+ deletename +"%'"; int deletenums=stmt.executeUpdate(deletesql); session.setAttribute("deletenames","成功删除"+ deletenums +"条数据"); stmt.close(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); session.setAttribute("deletenames","删除不成功"); } } %> <jsp:forward page="dbcode.jsp" /> </body> </html> (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐