いくつかのプロパティをデータベーステーブルに保存します。私はApache Commons Configuration 2.1を使用しています。私はthisを見つけましたが、私はそれを働かせることができません...Commons Configurationを使用してデータベース内にプロパティを保存する
私は周りを探索しましたが、私はすべてのドキュメントや例が見つかりませんでした。
-- Table: public.propcalendars
-- DROP TABLE public.propcalendars;
CREATE TABLE public.propcalendars
(
name character varying NOT NULL,
key character varying NOT NULL,
value character varying,
CONSTRAINT pk PRIMARY KEY (name, key)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.propcalendars
OWNER TO postgres;
そして、次のデータが保存されています:
name key value
diasemana SV2 0000010
fechafinal SV2 31/08
fechainicial SV2 01/07
これは私のコードです:
これは、データベース構造(のpostgresql)である(編集コードが修正されました) :
public class PropertiesConfiguration {
/*
* Atributos
*/
private static PropertiesConfiguration INSTANCE = null;
private DatabaseConfiguration configFechaInicioAnual;
private DatabaseConfiguration configFechaFinAnual;
private DatabaseConfiguration configDiasSemana;
/*
* Métodos
*/
private PropertiesConfiguration() throws ConfigurationException {
configure();
}
private void configure() throws ConfigurationException {
PGSimpleDataSource postgres = new PGSimpleDataSource();
postgres.setServerName("ip");
postgres.setDatabaseName("database");
postgres.setPortNumber(5433);
postgres.setUser("user");
postgres.setPassword("***");
postgres.setCurrentSchema("public");
BasicConfigurationBuilder<DatabaseConfiguration> builder = new BasicConfigurationBuilder<DatabaseConfiguration>(DatabaseConfiguration.class);
builder.configure(
new Parameters()
.database()
.setDataSource(postgres)
.setTable("propcalendars")
.setKeyColumn("key")
.setValueColumn("value")
.setConfigurationNameColumn("name")
.setConfigurationName("fechainicial")
);
configFechaInicioAnual = new DatabaseConfiguration();
configFechaInicioAnual.setDataSource(postgres);
configFechaInicioAnual.setKeyColumn("key");
configFechaInicioAnual.setValueColumn("value");
configFechaInicioAnual.setConfigurationName("fechainicial");
}
public static PropertiesConfiguration getInstance() throws ConfigurationException{
if(INSTANCE == null){
INSTANCE = new PropertiesConfiguration();
}
return INSTANCE;
}
public DatosCalendario getInfoCalendario(String pClaveCalendario, String pInfoCalendario){
DatosCalendario dc = new DatosCalendario();
dc.descripcion = pInfoCalendario;
dc.inicio = configFechaInicioAnual.getString(pClaveCalendario);
dc.fin = "";//configFechaInicioAnual.getString(pClaveCalendario);
dc.diasSemana = 1;//configFechaInicioAnual.getInt(pClaveCalendario);
return dc;
}
public class DatosCalendario{
public String descripcion;
public String inicio;
public String fin;
public Integer diasSemana;
@Override
public String toString(){
return " DatosCalendario [ descripcion=" + descripcion + ", inicio=" + inicio + ", fin=" + fin + ", diasSemana=" + diasSemana + "]";
}
}
}
そして、これは「fechainicial」と「SV2」を取得したときにスローされる例外です:
java.sql.SQLSyntaxErrorException:あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文が 'null WHERE key =' SV2 ''の近くにある行を参照してください。 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:686 )〜[mysql-connector-java-6.0.3.jar:6.0.3] com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:663)〜[mysql-connector-java-6.0 .3.jar:6.0.3] com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:653)〜[mysql-connector-java-6.0.3.jar:6.0.3] com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:115)〜[mysql-connector-java-6.0.3.jar:6.0.3] at com.mysql.cj.jdbc.ConnectionImpl .execSQL(ConnectionImpl.java:2041)〜[mysql-connector-java-6.0.3.jar:6.0.3] at com.mysql.cj.jdbc.PreparedStatement.executeInternal(Prepare dstatement.java:1827)〜[mysql-connector-java-6.0.3.jar:6.0.3] at com.mysql.cj.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1930)〜[mysql-connector- org.apache.commons.configuration2.DatabaseConfiguration $ JdbcOperation.openResultSet(DatabaseConfiguration.java:847)〜[commons-configuration2-2.1.jar:2.1] at org。 $ 1performOperation(DatabaseConfiguration.java:333)〜[commons-configuration2-2.1.jar:2.1] at org.apache.commons.configuration2.DatabaseConfiguration $ JdbcOperation.execute(DatabaseConfiguration.java:742) )[commons-configuration2-2.1.jar:2.1] at org.apache.commons.configuration2.DatabaseConfiguration.getPropertyInternal(DatabaseConfiguration.java:359)[commons-configuration2-2.1.jar:2.1] at org.apache.co (Commons-configuration2-2.1.jar:2.1) at org.apache.commons.configuration2.AbstractConfiguration.getAndConvertProperty(AbstractConfiguration.java:1749)[コモンズコンフィグレーション2-mmons.configuration2.AbstractConfiguration.getProperty(AbstractConfiguration.java:992) 2.1.jar:2.1] at org.apache.commons.configuration2.AbstractConfiguration.convert(AbstractConfiguration.java:1785)[commons-configuration2-2.1.jar:2.1] at org.apache.commons.configuration2.AbstractConfiguration.getString (AbstractConfiguration.java:1344)[commons-configuration2-2.1.jar:2.1] at com.ingartek.gtfs.bizkaibus.configuration.PropertiesConfiguration.getInfoCalendario(PropertiesConfiguration.java:83)[classes/:?] at com。 ingartek.gtfs.bizkaibus.main.GenerarGtfs.main(GenerarGtfs.java:43)[classes/:?] 13:55:15.120 [main] DEBUG com.in gartek.gtfs.bizkaibus.main。GenerarGtfs - DatosCalendario [descripcion = Sabados VERANOフリオ・アゴスト、INICIO = nullを、フィン=、diasSemana = 1]
私が間違って何をしているのですか?誰かが追加のチュートリアルやドキュメンテーションを提供できますか?
@Thiloは私に言ったとおり、ソリューションは、「ハイフン」を含まないテーブル名を使用するようにした。溶液
(「 - 」)。残念ながらPostgreSQLとMySQLだけで動作していますが、例外が発生しています。
java.sql.SQLSyntaxErrorException:SQL構文にエラーがあります。 mysqlの
を使用しながら、右の構文は、私は同じ問題に遭遇した1
ハイフンなしの表名を使用してください。 – Thilo
今すぐお試しください – russellhoff
うん!それは働いた、また、postgresqlを使用しています。ありがとう! – russellhoff