Куда я должен поместить файлы SQL в свой проект Java?

Вы не можете инициализировать массивы из других массивов или указателей. И вы также не можете назначить массивы.

Таким образом,

char destino[4] = arg_struct->porto;

является недействительным.

Есть два способа решения этой проблемы для вас:

  1. Положитесь на тот факт, что массивы естественным образом распадаются на указатели на их первый элемент. То есть, если ожидается указатель, то arg_struct->porto равно &arg_struct->porto[0]. Это означает, что вы можете

    char *destino = arg_struct->porto;
    
  2. вообще не иметь никакой переменной destino и передавать arg_struct->porto непосредственно на ваши strcmp вызовы:

    if (strcmp(arg_struct->porto, "BUS") == 0) ...
    
    [ 1118]

Также обратите внимание, что strcmp возвращает ноль , если две строки равны. Вот причина сравнения равенства с нулем выше.


Невозможность присвоить массиву также является причиной того, что такие операторы, как

parque[i][j].nSerie = "";

, потерпят неудачу.

Если вы хотите, чтобы массивы работали как пустые строки, все, что вам нужно сделать, это установить первый элемент в нулевой терминатор:

parque[i][j].nSerie[0] = '\0';  // Make string "empty"

Если вы хотите очистить все байты массива, вы необходимо использовать функцию memset :

memset(parque[i][j].nSerie, 0, sizeof parque[i][j].nSerie);  // "Clear" array

20
задан Community 23 May 2017 в 12:34
поделиться

4 ответа

В установке Java/Maven мы используем в качестве иерархии проекта:

project/src/main/java/Package/Class.java
project/src/test/java/Package/ClassTest.java
project/src/main/resources/Package/resource.properties
project/src/test/resources/Package/test_resource.properties

И для ответа на вопрос: Я поместил бы файлы SQL наряду с ресурсами под src/main/resources.

можно хотеть взглянуть на этот поток .

17
ответ дан 30 November 2019 в 00:55
поделиться

Это - небольшой рифф по начальному вопросу, но возможно чем более сложен SQL, тем больше он принадлежит базы данных (или сервисного слоя) а не в Вашем коде Java.

Иначе, поскольку код назревает, , проблемы как это возникают.

0
ответ дан 30 November 2019 в 00:55
поделиться

Я испытал бы желание поместить SQL-запросы в специализированное SQL папка под src. Это разделяет код Java от SQL:

+ src
  + java 
  + sql
     - Package/Class.sql
+ test

, Кроме того, Вы могли поместить их в простые файлы свойств с помощью вышеупомянутой структуры:

getUserByName = select * from users where name=?

getUserByEmail = select * from users where email=?

getUserByLongQuery = select * from users where email=? \
   and something = ? \
   where something_else = ?

кроме того, я думаю, что стоит упомянуть, что можно поместить многострочные строки в класс Java, если Вы предпочитаете следовать тем маршрутом:

class MyClass {
    MY_QUERY = "select * from users where email = ? " + 
               "and something_else = ?";
}
5
ответ дан 30 November 2019 в 00:55
поделиться

Я полностью соглашаюсь с boutta. Знаток устанавливает хорошую норму для src управления папкой. Вы рассмотрели хранение Вашего SQL в XML? Хранение запросов в единственном файле может помочь управлять SQL. Моя первая интуиция является чем-то простым:

<?xml version="1.0" encoding="UTF-8"?>
<queries>
    <query id="getUserByName">
        select * from users where name=?
    </query>
    <query id="getUserByEmail">
        select * from users where email=?
    </query>
</queries>

Для парсинга файла используйте xpath или даже SAX для создания карты запросов, включенных идентификатором для быстрых поисков запроса.

1
ответ дан 30 November 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: