Java 如何发送带有参数的查询

Java 如何发送带有参数的查询,java,php,android,sql,Java,Php,Android,Sql,我想在android应用程序中使用一些参数执行插入查询 例如,在php中,它类似于:- $query ="insert into inventoryproductrel(id, productid, sequence_no, quantity, listprice) values(?,?,?,?,?)"; $qparams = array($id,$prod['prod'],$counter,$prod['pcs'],$prod['price']); $productadded=$adb->

我想在android应用程序中使用一些参数执行插入查询

例如,在
php
中,它类似于:-

$query ="insert into inventoryproductrel(id, productid, sequence_no, quantity, listprice) values(?,?,?,?,?)";
$qparams = array($id,$prod['prod'],$counter,$prod['pcs'],$prod['price']);
$productadded=$adb->pquery($query,$qparams);
此处
pquery
是一个函数:-


我不知道该怎么做,即在java/android中使用参数执行查询。

试试这种方法,希望对您有所帮助

        ContentValues args = new ContentValues();
        args.put("id", id);
        args.put("productid", productid);
        args.put("sequence_no", sequence_no);
        args.put("quantity", quantity);
        args.put("listprice", listprice );
        try{
            SQLiteDatabase database = databasehelper.getWritableDatabase();
            database.insertWithOnConflict(tableName, null, args, SQLiteDatabase.CONFLICT_REPLACE);
        }catch(Exception e){
            e.printStackTrace();
        }

您可以从Android应用程序向同一PHP脚本发出POST请求,在将值插入数据库之前,通过POST参数设置变量的值

使用以下代码发出POST请求。确保从异步任务或单独的线程执行此操作:

public String makePOSTRequestNew(String urlString,
        List<NameValuePair> nameValuePairs) {
    URL url;
    String response = "";
    try {
        url = new URL(urlString);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(10000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);

        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                os, "UTF-8"));
        writer.write(getQuery(nameValuePairs));
        writer.flush();
        writer.close();
        os.close();

        InputStream responseStream = new BufferedInputStream(
                conn.getInputStream());
        BufferedReader responseStreamReader = new BufferedReader(
                new InputStreamReader(responseStream));
        String line = "";
        StringBuilder stringBuilder = new StringBuilder();
        while ((line = responseStreamReader.readLine()) != null) {
            stringBuilder.append(line);
        }
        responseStreamReader.close();
        response = stringBuilder.toString();
        conn.connect();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return response;
}
下面是使用要发布的参数调用方法的方法:

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("paramName",
                            paramValue));
String insertResponse = makePOSTRequestNew(insertURL, nameValuePairs);
List nameValuePairs=new ArrayList();
添加(新的BasicNameValuePair(“paramName”,
参数值);
String insertResponse=makePOSTRequestNew(insertURL,nameValuePairs);

您想将数据保存在设备或在线服务器上的本地sqlite数据库中吗?@Shivam Verma online server什么是
sd
?如果我没有本地数据库,我的意思是我通过url连接到我的数据库,它会工作吗?在
writer.write(getQuery(nameValuePairs))行显示错误(“getQuery(List)方法未定义”)insertResponse变量存储的是什么?insertResponse存储POST请求的响应。缺少getQueryMethod。刚刚添加。我用于插入值的查询在哪里,我的意思是,我将在其中插入值的表名在哪里??
private String getQuery(List<NameValuePair> params)
        throws UnsupportedEncodingException {
    StringBuilder result = new StringBuilder();
    boolean first = true;

    for (NameValuePair pair : params) {
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
    }

    return result.toString();
}
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("paramName",
                            paramValue));
String insertResponse = makePOSTRequestNew(insertURL, nameValuePairs);