2013-07-15 50 views
1

我使用java方法试图通过创建表tm7(name varchar(20))来实现将servlet写入数据库;但代码以某种方式不通过tomcat插入数据库。任何专家都可以保存这个?谢谢!! (抱歉还挺新本)写入数据库tomcat

my tomcat writeservlet file 

public void doPost(HttpServletRequest req, HttpServletResponse resp) 
     throws ServletException, IOException { 

    BufferedReader reader = new BufferedReader(new InputStreamReader(
      req.getInputStream())); 
    String names; 

    while ((names = reader.readLine()) != null) // read from mobile device 
    { 
     Statement stmt; 
     String sgd = names; 
     String name = sgd.toString(); 

     try { 
      stmt = con.createStatement(); 
      stmt.executeUpdate("INSERT INTO tm7 VALUES ('" + name 
        + "') "); 
     } catch (Exception e) { 
     } 

     System.out.println(name); 
    } 

    PrintWriter out = resp.getWriter(); 
    out.println(" server received"); 
} 

}

我主要的Android的Java

private class NetworkTask2 extends AsyncTask<String, Void, String>{ 
    String line=""; 
    protected String doInBackground(String... params) { 
     String address=params[0]; 
     try{ 
     URL url = new URL(address); 
     HttpURLConnection con = (HttpURLConnection)url.openConnection(); 
     con.setRequestMethod("POST"); 
     OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream()); 
     out.write(one.getText().toString());//get converted value 
     //out.write(two.getText().toString());//get converted value 
     out.flush(); 
     out.close(); 

     BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); 
     line=br.readLine();// read back response from server 
     } 
    catch(IOException e){Log.e("error", "mm", e); } 

     return line; 
    } 
    protected void onPostExecute(String result) { 
     one.setText(result); 
     //two.setText(result); 
    } 
} 
+0

hmmm所以你没有在客户端写任何线,并期望在服务器端获得一个? – Selvin

+0

我使用sharedpreference和在客户端使用字符串名称 –

回答

1

我想建议发现问题是在服务器或客户端。非常容易这两种情况:

从Android中的调试器开始,看看是否被调用。 从调试器开始,使用服务器端应用程序,并检查是否在doPost方法中调用了所谓的流程。

修复错误并完成。

 try { 
     stmt = con.createStatement(); 
     stmt.executeUpdate("INSERT INTO tm7 VALUES ('" + name 
       + "') "); 

    // add this lines: 
    con.flush(); 
    con.close(); 

    } catch (Exception e) {   
     e.printStacktace() // at least 
    } 
+0

出于某种原因,我不能添加con.flush()而不是((PrintWriter)con).flush();但是这个错误打开文件:logcat中没有这样的文件或目录(2) –

+0

@dawfawf在服务器端某处打开与数据库的连接。我不确定为什么不在doPost()方法中, - 可能是因为您使用的是复制粘贴代码,现在想知道为什么不能正常工作 - 但应该使用autoflush连接或不连接。确保Java将语句发送到mysql或任何数据库(做日志) – 2013-07-15 14:41:14

+0

yup我做了一个日志Intent log = new Intent(LogActivity.this,MainForm.class); (“pass1”,two.getText()。toString()); \t \t \t log.putExtra(“pass2”,one.getText()。toString()); –