Вы можете выполнить вложенный запрос. Очень полезно для Mysql
SELECT a.`article_id`,
a.`title`,
a.`text`
FROM `articles` a
WHERE a.article_id IN (
SELECT r.`article_id`
FROM `article_category_reference` r
WHERE r.category_id NOT IN ( ?,? )
);
Проще говоря, перейдите к article_category_reference, получите все идентификаторы, кроме них, и используйте эти идентификаторы для запроса таблицы статей.
Смотрите на JSON. http://www.json.org. Если Вы переходите в из JavaScript, это - большая справка. Я не знаю, насколько хороший поддержка Java все же.
Если Вы имеете контроль над обеими кодовыми базами, необходимо рассмотреть использование Буферов Протокола.
Вы могли использовать формат Ввода данных/Вывода данных Java, который хорошо описан в javadoc.
Если Ваша структура не собирается изменяться (очень), и Ваши данные находятся в довольно последовательном формате, Вы могли просто выписать значения к файлу CSV или некоторый другой простой формат.
Это может быть легко считано в Java, и Вы не должны будете волноваться о сериализации к XML. Иногда простое движение является самым легким маршрутом.
Одна возможность создает небольшие XML-файлы с заголовком, идентификатором, параметрическими усилителями, и т.д., и затем ссылкой (именем файла) туда, где данные плавающие содержатся. Принятие там является ничем специальным о данных плавающих, и тот Java и C используют тот же формат с плавающей точкой, можно считать тот файл в с readFloat () DataInputStream.
Смотрите на сервисы Гессиана/Мешковины Смолы. Вы не можете хотеть целый сервис, просто часть API и понимание проводного протокола.
Если:
затем я, вероятно, просто продолжал бы писать данные из C в способе, которым Вы делаете (возможно, с небольшой поправкой - видят ниже), и поверните проблему в то, как Вы считываете те данные с Java.
Для чтения данных въезжают задним ходом от Java, используют ByteBuffer. По существу вытяните в плитах байтов от Ваших данных, перенесите ByteBuffer вокруг них и затем используйте получение (), getFloat (), getInt () и т.д. методы. Пакет NIO также имеет буферы "обертки", например, FloatBuffer, который от тестов я сделал, кажется, приблизительно на 20% быстрее для чтения больших количеств того же типа.
Теперь, одной вещью, относительно которой необходимо будет быть осторожны, является порядок байтов. От Java Вам нужно к порядку вызовов (ByteOrder. МАЛО _ ПОРЯДОК БАЙТОВ) или порядок (ByteOrder. БОЛЬШОЙ _ ПОРЯДОК БАЙТОВ) на Вашем буфере, прежде чем Вы начнете считывать данные. Для решения, чтобы использовать я рекомендовал бы, чтобы в очень запустились потока, Вы пишете некоторое известное 16-байтовое значение (например, 255 = 0x00ff). Затем от Java, вытащите эти два байта и проверьте порядок (0xff, 0x00 или 0x00, 0xff), чтобы видеть, есть ли у Вас мало или обратный порядок байтов.
Мне нравятся CSV и "Буферные ответы" Протокола (хотя, сразу, буферная вещь протокола могла бы быть очень похожа на YAML кто знает).
При необходимости в плотно упакованных записях для данных большого объема Вы могли бы рассмотреть это:
Создайте текстовый заголовок файла, описывающий текущую файловую структуру: рекордные размеры (типы????) и имена полей / размеры. Прочитайте и проанализируйте заголовок, затем используйте низкоуровневый двоичный файл операции ввода-вывода для загрузки полей каждой записи, er, свойств объекта или независимо от того, что мы называем его в этом году.
Это дает Вам способность изменить strucutre немного и иметь его самоописать, все еще позволяя Вы упаковать большой объем в меньшем пространстве, чем XML позволили бы.
TMTOWTDI, я предполагаю.