MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 关于servlet的链表操作,现在只剩下一个将链表存入m

关于servlet的链表操作,现在只剩下一个将链表存入mysql的函数(saveNode())有毛病了,实在想不出来,大家帮看看,先多谢了

www.MyException.Cn  网友分享于:2013-01-09  浏览:20次
关于servlet的链表操作,现在只剩下一个将链表存入mysql的函数(saveNode())有毛病了,实在想不出来,大家帮看看,先谢谢了!
Java code
import java.util.Scanner;
import java.io.*; 
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

class Node {
    public int BookStore;                 //图书库存量
    public String BookNo;                //图书编号
    public String BookName;          //图书名称
    public int BookLend;                    //图书上架数量
    public String BookPublishing;//图书出版社
    public Node Next;                       //指向下一个Node对象的对象引用
    
  public Node(){//只有一个节点
      BookNo="000000";
      BookName="书名未初始化";
      BookLend=0;
      BookStore=0;
      BookPublishing="出版社未初始化";
      Next = null;
  }
  public Node(Node eNext,Node t){//不止一个节点
      BookNo=t.BookNo;
      BookName=t.BookName;
      BookLend=t.BookLend;
      BookStore=t.BookStore;
      BookPublishing=t.BookPublishing;
      Next = eNext; 
  }
  public void setData(int eBookStore,int eBookLend,String eBookNo,String eBookName,String eBookPublishing){
      //设置当前结点的值
      BookNo = eBookNo;
      BookName = eBookName;
      BookPublishing = eBookPublishing;
      BookLend = eBookLend;
      BookStore = eBookStore;   
  }

  public Node getData() {//获取当前节点的值
      Node rNode =new Node();
      rNode.BookNo=BookNo;
      rNode.BookName=BookName;
      rNode.BookPublishing=BookPublishing;
      rNode.BookLend=BookLend;
      rNode.BookStore=BookStore;
      rNode.Next=Next;
      return rNode;
  }
  public void setNext(Node dNext){ //设置当前节点的指针
      Next = dNext; 
  } //修改指针
  public Node getNext() {  //获取当前节点的指针
      return Next; 
  } //获得指向的对象引用
}
class LinkList {
private Node firstNode;
private Node headNode=firstNode;
String htm="";
public LinkList()    {        firstNode = null;}//建立空链表    

public String visitAllNode()
{//遍历表中每个结点,并串成一个字符串
Node nextNode = firstNode; 
String s = "<table><tr><td>书号</td><td>书名</td><td>库存量</td><td>上架数量</td><td>出版社</td></tr>";
  while (nextNode != null)  
  { 
      Node number = nextNode.getData();
      s = s +"<tr>";
      s = s +"<td>"+number.BookNo + "</td>";
      s = s +"<td>"+number.BookName + "</td>";
      s = s +"<td>"+number.BookStore + "</td>";
      s = s +"<td>"+number.BookLend + "</td>";
      s = s +"<td>"+number.BookPublishing + "</td></tr>";          
      nextNode = nextNode.getNext();
  }
s+="</table>";
return s;   
}
public String vN()
{//遍历表中每个结点,并串成一个字符串
Node nextNode = firstNode; 
String s = "<table><tr><td>书号</td><td>书名</td><td>库存量</td><td>上架数量</td><td>出版社</td></tr>";
if(nextNode==null){
    s="没有可供删除的结点!";
}
else{
while (nextNode != null)  
{ 
    Node number = nextNode.getData();
    s = s +"<tr>";
    s = s +"<td>"+number.BookNo + "</td>";
    s = s +"<td>"+number.BookName + "</td>";
    s = s +"<td>"+number.BookStore + "</td>";
    s = s +"<td>"+number.BookLend + "</td>";
    s = s +"<td>"+number.BookPublishing + "</td>";
    s = s +"<td><a href=\"DemoLink?menu=1&no="+number.BookNo+"\" target=\"_self\">删 除</a></td></tr>";          
    nextNode = nextNode.getNext();
}
s+="</table>";
}
return s;   
}

public void insertAtEnd(Node tt) //在链表后插入结点
{
    firstNode = new Node(firstNode,tt);
}

public void deleteAtID(String data)//删除指定的节点
{    int flag=0;
    Node tempNode = firstNode;
    Node headNode = tempNode;

    if(firstNode == null)
        htm="这是一个空链表,没有可供删除的结点!";
    else 
    {
        if(firstNode.BookNo.equals(data))
        {
            firstNode=firstNode.getNext();
        }
        else
        {
        while(firstNode!=null)
        {
            if(firstNode.BookNo.equals(data))
                {
                        tempNode.setNext(firstNode.getNext());
                        firstNode=headNode;
                    flag=1;
                    htm="<script language=\"javascript\"> self.location.href=\"DemoLink?menu=4\"</script>";
                    break;
                }
                else
                { tempNode=firstNode;
                    firstNode=firstNode.getNext();
                    }
            }
                if(flag ==0 )
                {
                    htm="链表中没有你要删除的节点";
                }
        }
    }
}

public void saveNode()
{
 String driver = "com.mysql.jdbc.Driver";                        // 驱动程序名
 String url = "jdbc:mysql://localhost/book";            // URL指向要访问的数据库名scutcs
 String user = "root";                                                            // MySQL配置时的用户名    
 String password = "6868932";                                                // MySQL配置时的密码
 String sql = "";
 try { 
  Class.forName(driver);                                                        // 加载驱动程序
  Connection conn = DriverManager.getConnection(url, user, password);// 连续数据库    
  Statement statement = conn.createStatement();            // statement用来执行SQL语句
     if(firstNode == null)
        htm="这是一个空链表,没有可供存储的结点!";
    else 
    {
        while(firstNode!=null)
        {        
            sql="insert into book(BookNo,BookName,BookLend,BookStore,BookPublishing) values(firstNode.BookNo,firstNode.BookName,first.BookLend,first.BookStore,first.BookPublishing)";
        statement.executeUpdate(sql);
            firstNode=firstNode.getNext();
        }
  }
 }
    catch(ClassNotFoundException e) {
  htm= e.toString();
    }
catch(SQLException e) {    
    htm= e.toString();   
    }
catch(Exception e) {    
     htm= e.toString();
     }
}
      
public LinkList readNode()
{Node h=new Node();
    LinkList listNull = new LinkList();
    h=firstNode;
 String driver = "com.mysql.jdbc.Driver";                        // 驱动程序名
 String url = "jdbc:mysql://localhost/book";            // URL指向要访问的数据库名scutcs
 String user = "root";                                                            // MySQL配置时的用户名    
 String password = "6868932";                                                // MySQL配置时的密码
 Node t1=new Node();
 t1.Next=null;
 try { 
  Class.forName(driver);                                                        // 加载驱动程序
  Connection conn = DriverManager.getConnection(url, user, password);// 连续数据库
  //if(!conn.isClosed()) 
  //        return htm="Succeeded connecting to the Database!";
  Statement statement = conn.createStatement();            // statement用来执行SQL语句
  String sql = "select * from book";                                // 要执行的SQL语句
  ResultSet rs = statement.executeQuery(sql);                // 结果集
  String BookNo = null;
  String BookName=null;
  String BookPublishing=null;

  while(rs.next()) {
   t1.BookNo = rs.getString("BookNo");     // 数据库编码为utf-8时的输出方式
   // 数据库未使用utf-8时的输出方式:首先使用ISO-8859-1字符集将选定字段解码为字节序列并将结果存储新的字节数组中。
   // 然后使用utf-8字符集解码指定的字节数组
   //BookNo = new String(rs.getString("BookNo").getBytes("ISO-8859-1"),"utf-8");
     t1.BookName = rs.getString("BookName");
     //BookName = new String(rs.getString("BookName").getBytes("ISO-8859-1"),"utf-8");
     t1.BookPublishing = rs.getString("BookPublishing");
     //BookPublishing = new String(rs.getString("BookPublishing").getBytes("ISO-8859-1"),"utf-8");
     t1.BookLend = rs.getInt("BookLend");
     t1.BookStore= rs.getInt("BookStore");
   listNull.insertAtEnd(t1);
  }
    //htm=listNull.showNode();
  rs.close();
  conn.close();
    return listNull;
 } 
catch(ClassNotFoundException e) {
  htm= e.toString();
    }
catch(SQLException e) {    
    htm= e.toString();   
    }
catch(Exception e) {    
     htm= e.toString();
     }
     return listNull;
}


public String showNode()
{
    if(firstNode == null)
        return htm="这是一个空链表!";        
    else
      return htm=visitAllNode();        
}
}

public class DemoLink extends HttpServlet{
    String htm="";
    LinkList listNull = new LinkList();
    LinkList list = new LinkList();

    public static void main(String args[]){
        
    }
    public void doPost(HttpServletRequest req,HttpServletResponse resp)
    throws ServletException,IOException
    {

        resp.setContentType("text/html;charset=utf-8");
        Node tt=new Node();
        String     BN=new String(req.getParameter("BookNo").getBytes("ISO-8859-1"),"utf-8");
        String     B =new String(req.getParameter("BookName").getBytes("ISO-8859-1"),"utf-8");
        String     BP=new String(req.getParameter("BookPublishing").getBytes("ISO-8859-1"),"utf-8");
        int            L    =Integer.valueOf(req.getParameter("BookLend")).intValue();
        int            S    =Integer.valueOf(req.getParameter("BookStore")).intValue();
        tt.BookNo=BN;
        tt.BookName=B;
        tt.BookPublishing=BP;
        tt.BookLend=L;
        tt.BookStore=S;
        listNull.insertAtEnd(tt);
        resp.sendRedirect("DemoLink?menu=3");
    }
    public void doGet(HttpServletRequest req,HttpServletResponse resp)
        throws ServletException,IOException
    {
        String menu=req.getParameter("menu");
        resp.setContentType("text/html;charset=utf-8");
        int xz=Integer.valueOf(menu).intValue();
        switch(xz){
            case 1:
                String delno=req.getParameter("no");
                listNull.deleteAtID(delno);
                htm=listNull.showNode();
                break;
            case 2:
                htm=listNull.showNode();
                break;
            case 3:
                htm="<table><form method=\"post\" action=\"DemoLink\">"+
                            "<tr><td>图书编号:</td><td><input name=\"BookNo\" type=\"text\" /></td></tr>"+
                            "<tr><td>图书名称:</td><td><input name=\"BookName\" type=\"text\" /></td></tr>"+
                            "<tr><td>上架数量:</td><td><input name=\"BookLend\" type=\"text\" /></td></tr>"+
                            "<tr><td>库 存 量:</td><td><input name=\"BookStore\" type=\"text\" /></td></tr>"+
                            "<tr><td>出 版 社:</td><td><input name=\"BookPublishing\" type=\"text\" /></td></tr>"+
                            "<tr><td><input type=\"submit\" value=\"确 定\" />&nbsp;&nbsp;<input value=\"重 置\" type=\"reset\" />"+
                        "</form></table>";
                break;
            case 4:
                htm=listNull.vN();
                break;
            case 5:
                listNull.saveNode();
                //listNull=listNull.readNode();
                htm=listNull.showNode();
                break;
            case 6:
                listNull=listNull.readNode();
                //list=listNull;
                htm=listNull.showNode();
                break;
            default:
                htm="参数调用不合法!";
                break;
    }
        PrintWriter out=resp.getWriter();
        out.println("<html>");
        out.println("<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">");  
        out.println("<head><title></title>");
        out.println("<SCRIPT   LANGUAGE=\"JavaScript\"  type=\"text/javascript\" src=\"node.js\"></SCRIPT>");
        out.println("</head><body>");
        out.println(htm);
        out.println("</body></html>");
        out.close();
    }
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有