0

我正在尝试使用以下方法将数据插入到 mysql 表中,但无法这样做。关于我可能会出错的地方的任何想法?

方法一:使用HTTPClient直接访问URL。下面是代码:

DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpPost = new HttpGet("http://<lclhst>/GnPServlet/GetNpostServlet/?    account=1&password=123");
HttpResponse execute = client.execute(httpPost);

方法二:使用 URL 连接直接访问 URL。下面是代码:

 URL url = new URL("http://<lclhst>/GnPServlet/GetNpostServlet/?    account=1&password=123");
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.setDoInput(true);
    conn.setDoOutput(true);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    conn.setRequestProperty("Accept", "application/octet-stream");
    conn.connect();

方法3:使用Arraylist传值。

当我从浏览器运行 URL 时,我收到成功消息“已插入”并且数据被插入到数据库中。但是通过应用程序尝试时相同,不会插入数据。下面是servlet代码:

private String accountLookup(String acct, String pwd)
{
Connection con = null;
Statement st = null;
StringBuffer msgb = new StringBuffer("");

try
{
  // These will vary depending on your server/database      
  Class.forName("com.mysql.jdbc.Driver");  
  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbone?user=root&password=root");

  Statement stmt = con.createStatement();

  stmt.executeUpdate("insert into accttbl(address, description, time) values ('test 07-jul',ok,12:12)");
  return "Inserted";
}
catch (Exception e)
{
  return e.toString();
}
}

下面的代码插入数据,但它打开了我不想要的浏览器。此外,数据插入并不总是成功的。

 String url = "http://10.0.2.2:8080/GnPServlet/GetNpostServlet";
                     Intent i = new Intent(Intent.ACTION_VIEW);
                     i.setData(Uri.parse(url));
                     startActivity(i);
4

1 回答 1

0
conn.setRequestMethod("POST");

看起来您在POSTservlet 需要 a 时发送 a GET(如果您只是将 URL 粘贴到 URL 栏中,浏览器将发送的内容)

conn.setRequestMethod("GET");

...很可能是您想要的,因为您的参数已在 URL 中编码。

另外,您确定帐户之前的 URL 中的空格应该在那里吗?

于 2013-07-13T07:16:26.097 回答