Извлечение данных с веб-сервера на iPhone возвращает значения мусора - PullRequest
0 голосов
/ 21 марта 2011

Я использую этот запрос для извлечения данных с веб-сервера в приложение для iPhone с использованием JSON Parsing.

SELECT a.FundID, a.FundName, a.Strike, a.LongShort, a.Current, a.Points, a.OpenClose
FROM tbl_Positions a, tbl_FundStatic b
WHERE b.FundID = a.FundID
AND b.UserID = '14'
AND a.OpenClose != 'Close'
UNION 
SELECT c.FundID, c.FundName, '0' AS Strike, "-" AS LongShort, b.LastTradePrice, '0' AS Points, "-" AS OpenClose
FROM tbl_FundStatic c, tbl_MarketData b
WHERE c.UserID = '14'
AND b.IndexCode = c.`Index` 
AND c.FundID NOT 
IN (
     SELECT DISTINCT (FundID)
     FROM tbl_Positions
   )

В идеале он должен возвращать данные типа

enter image description here

Но для столбцов Points и Strike.

показано значение барахла (например, "MA ==" и т. Д.)

Что может быть не так?

EDIT:

Я использую SBJSON Parser.

Я использую следующий код для разбора данных в строку JSON на стороне сервера:

        DataTable dt = new DataTable();
        MySqlDataAdapter da = new MySqlDataAdapter(cmd);
        da.Fill(dt);
        objMyCon.Close();

        String jsonString = JsonConvert.SerializeObject(dt);
        String finalString = "{\"ExecuteTrade\":";
        finalString += jsonString;
        finalString += "}";

        return finalString; 

Значение finalString

{"ExecuteTrade":[{"FundID":28,"FundName":"Sam Fund 2","Strike":"MTIxMzA=","LongShort":"Long","Current":11985.00,"Points":"LTE0NQ==","OpenClose":"Open"},
{"FundID":27,"FundName":"Sam Fund 1","Strike":"MTE5ODU=","LongShort":"Long","Current":11985.00,"Points":"NTAwMDA=","OpenClose":"Open"},
{"FundID":32,"FundName":"Sam Fund 3","Strike":"MjIwMDA=","LongShort":"Long","Current":14000.00,"Points":"NjAwMA==","OpenClose":"Open"},
{"FundID":45,"FundName":"Rob Fund test","Strike":"OTk5OQ==","LongShort":"NULL","Current":11984.61,"Points":"OTk5OQ==","OpenClose":"NULL"},   
   {"FundID":46,"FundName":"newtestfund5th","Strike":"OTk5OQ==","LongShort":"NULL","Current":11984.61,"Points":"OTk5OQ==","OpenClose":"NULL"}]}

Это дата:

enter image description here

На стороне приложения я использую

NSDictionary *diction = [responseString JSONValue];

ПРИМЕЧАНИЕ: Запрос работает нормально при выполнении на сервере.

Ответы [ 2 ]

1 голос
/ 21 марта 2011

Изменил мой запрос на

SELECT a.FundID, a.FundName, a.Strike, a.LongShort, a.Current, a.Points, a.OpenClose
FROM tbl_Positions a, tbl_FundStatic b
WHERE b.FundID = a.FundID
AND b.UserID = '14'
AND a.OpenClose != 'Close'
UNION 
SELECT c.FundID, c.FundName, 0 AS Strike, "-" AS LongShort, b.LastTradePrice, 0 AS Points, "-" AS OpenClose
FROM tbl_FundStatic c, tbl_MarketData b
WHERE c.UserID = '14'
AND b.IndexCode = c.`Index` 
AND c.FundID NOT 
IN 
(
      SELECT DISTINCT (FundID)
      FROM tbl_Positions
)

Только что удалил одинарные кавычки ' вокруг десятичных значений.

1 голос
/ 21 марта 2011

Устраните неполадки в каждой точке, прежде чем она попадет на ваш iPhone. Если вы запустите запрос на хосте базы данных, что вы получите? Если вы выполните запрос через веб-сервер, какой ответ JSON вы получите?

Кроме того, какую платформу вы используете для анализа JSON? Вставка фрагмента кода, показывающего, как вы анализируете ответ, может помочь дать более сфокусированные ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...