日期:2014-05-18  浏览次数:20609 次

有關在servlet中往數據庫寫數據的問題
我在servlet中往數據庫插入數據,表字段為字符型,當我錄入數字時,保存正常,當我錄入字母或漢字時,IE地址欄中會出現servlet網址(http://192.168.0.29/bbs/SaveAreaServlet),頁面一片空白,數據庫中未存入數據,很是迷茫,懇請大家解惑
代碼如下:
//獲取名稱、簡介
String   areaName=request.getParameter( "areaName ");
String   areaIntr=request.getParameter( "areaIntr ");
//創建數據庫連接對象
DBConnManager   connManager=new   DBConnManager()   ;
Connection   conn=connManager.getConnection();  
Statement   stmt=null;
ResultSet   rs=null;
int   r=0;
try
{
//sql語句
String   sql= "insert   into   area(name,intr)   values( "+areaName+ ", "+areaIntr+ ") ";
//創建數據記錄集對象
stmt=conn.createStatement();
//
r=stmt.executeUpdate(sql);
if(r!=1)
    {
    request.getSession(true).setAttribute( "error ",   "添加論壇區失敗 ");
response.sendRedirect( "error.jsp ");
    }
    else
    {
    response.sendRedirect( "area.jsp ");
    }
}catch(SQLException   sqlExc)
{
sqlExc.printStackTrace();
}catch(Exception   e)
{
e.printStackTrace();
}finally
{
//關閉連接,釋放數據庫資源
try
{
if(rs!=null)
{
rs.close();
}
if(stmt!=null)
{
stmt.close();
}
connManager.releaseConnection(conn);
}catch(SQLException   sqlExc)
{
sqlExc.printStackTrace();
}
}

------解决方案--------------------
正确的应该是
String sql= "insert into area(name,intr) values( ' "+areaName+ " ', ' "+areaIntr+ " ') ";
------解决方案--------------------
sql语句这样写吧,String sql= "insert into area(name,intr) values( ' " + areaName+ " ', ' "+areaIntr+ " ') ";
------解决方案--------------------
1.SQL语句有问题
2,在String areaName=request.getParameter( "areaName ")之前加上request.setCharacterEncoding( "utf-8 ");此处的字符集应该跟页面所使用的字符集相同,如果页面使用的是gb2312则此处应该也是gb2312