2012-04-04 60 views
-4

插入數據雖然我在db表執行插入時,發生異常時,其表示:錯誤而在MySQL

​​

在: - >

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'branchname' at row 1 

列類型是varchar

JSP:

<form action="BranchServlet" method="post"> 
<table align="center"> 
<tr> 
<td align="center" colspan="2"><hr>Add Branch Details<hr></td> 
</tr> 


<tr> 
<td align="left">Branch Name</td> 
<td align="center"><input type="text" name="branchname"></td> 
</tr> 
<tr> 
<td align="left">Branch Code</td> 
<td align="center"><input type="text" name="branchcode"></td> 
</tr> 
<tr> 
<td align="center"> 

</td> 
</tr> 
<tr> 
<td align="center" colspan="2"><input type="submit" Value="Submit"></td> 
</tr> 
</table> 
</form> 

的Servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 

     String bname = request.getParameter("branchname"); 
     String bcode = request.getParameter("branchcode"); 

     BranchModel bm = new BranchModel(); 
     BranchDAO bd = new BranchDAO(); 

     bm.setBranchcode(bcode); 
     bm.setBranchname(bname); 

     bd.insert(bm); 

     response.sendRedirect("branches.jsp"); 
    } 

DAO方法:

public void insert(BranchModel m) 
    { 
     try{ 
      Class.forName(driver); 
      con = DriverManager.getConnection(url+db,"root","root"); 
      Statement st = con.createStatement(); 

      st.executeUpdate("insert into branches values('"+m.getBranchcode()+"','"+m.getBranchname()+"')"); 
      System.out.println("record inserted"); 
     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
+1

我不想變得無情,但發佈HTML數據截斷錯誤似乎不相關。爲你的帖子添加緊急你不好,這是一個志願者網站。此外,您的代碼可能會受到SQL注入攻擊。 – RedFilter 2012-04-04 17:34:37

+0

只有在[Little Bobby Tables](http://xkcd.com/327/)正在使用他的網站時,使用像* guyz *或* plz *這樣的奇怪詞彙才能改善感知 – 2012-04-04 17:40:04

+0

@ RedFilter。 – 2012-04-04 17:44:02

回答

4

你說的列是varchar類型,但是不知道大小爲varchar。這似乎是你問題的根源。我沒有看到任何驗證對文本輸入的大小實施限制。輸入驗證需要將輸入大小限制爲相應的varchar列的大小。

+0

10就像RedFilter說,這是易受注射。 – Seth 2012-04-04 17:39:24

+0

是的,你是對的..問題是與領域的大小,而不是它的類型 – 2012-04-04 17:42:25

+0

@SohelKhalifa,如果解決了你的問題,你需要接受答案(綠色複選標記)。 – 2012-04-04 17:43:03