Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不带“";退出“;从字符串_Java_String_Sqlite_Concatenation - Fatal编程技术网

Java 不带“";退出“;从字符串

Java 不带“";退出“;从字符串,java,string,sqlite,concatenation,Java,String,Sqlite,Concatenation,我在很多时候使用java,但是我从来没有找到更好的concat字符串的“图形化”方法,当我编写SQL查询时,我对我所做的所有concat都有一个难以阅读的查询(我使用java类来表示db中所有列的名称值),比如 public static class DBMetaData { static class LISTINO_TABLE { static final String TABLE_NAME = "listino"; static final String

我在很多时候使用java,但是我从来没有找到更好的concat字符串的“图形化”方法,当我编写SQL查询时,我对我所做的所有concat都有一个难以阅读的查询(我使用java类来表示db中所有列的名称值),比如

public static class DBMetaData {

static class LISTINO_TABLE {
    static final String TABLE_NAME = "listino";
    static final String ID = "_ID";
    static final String PRODUCT_NAME_KEY = "nome_prodotto";
    static final String CODE_KEY = "codice";
    static final String PRICE_KEY = "prezzo";
    static final String ENABLE_KEY = "enable";
    static final String PREZZO_VENDITA_KEY = "prezzo_vendita";
    static final String RICAVO_KEY = "ricavo";
    static final String NUMERO_COLLI_KEY = "num_colli";
    static final String TIPO_COLLO_KEY = "tipo_collo";
    static final String DATA_INSERIMENTO_KEY = "data_inserimento";
}
当我写查询时,我有这样的查询

    String sql = "select *,lo." + DBMetaData.LISTINO_ORDINE_TABLE.QUANTITY_KEY + " as quant from " + DBMetaData.LISTINO_ORDINE_TABLE.TABLE_NAME +
            " lo left join "+DBMetaData.OFFERTE_TABLE.TABLE_NAME + " o on lo."+ DBMetaData.LISTINO_ORDINE_TABLE.CODICE_ID + " = o." + DBMetaData.OFFERTE_TABLE.CODICE_ARTICOLO_KEY +
            " left join "+DBMetaData.LISTINO_TABLE.TABLE_NAME + " l on lo."+DBMetaData.LISTINO_ORDINE_TABLE.CODICE_ID + "= l."+DBMetaData.LISTINO_TABLE.CODE_KEY +
            " left join " + DBMetaData.INVENTARIO_TABLE.TABLE_NAME + " i on lo."+DBMetaData.LISTINO_ORDINE_TABLE.CODICE_ID + "= i."+DBMetaData.INVENTARIO_TABLE.CODE_KEY +
            " where "+DBMetaData.LISTINO_ORDINE_TABLE.NUMBER_KEY + " = 0 order by "+DBMetaData.LISTINO_ORDINE_TABLE.QUANTITY_KEY + " DESC";
有更好的方法来编写查询吗?我知道我可以不用DBMetaData编写查询,但是如果我想在将来编辑一些东西,我必须重新编辑我所有的sql,使用这个类是我从android开始学习的一个实践,我正在使用它,但我不喜欢它:-)


有什么建议吗?tnx

您可以使用
String.format
删除所有字符串连接的需要

例如:

String sql = String.format("select * from %s", TABLE_NAME);
您还可以使用ApacheCommons文本

最终映射值Map=newhashmap();
价值映射出售(“表名”、“表”);
//等等。。。
final String=“select*from${tableName}”;
最终字符串sql=newStringSubstitutor(valuesMap)。替换(字符串);
//“从表中选择*”

同意!这是我们能买到的最短的。!
final Map<String, String> valuesMap = new HashMap<>();
valuesMap.put("tableName", "Table");
//etc...

final String string = "select * from ${tableName}";
final String sql = new StringSubstitutor(valuesMap).replace(string);
//"select * from Table"