2016-06-17 90 views
0

我已經設法將我的Web服務連接到數據庫,但現在每當我提出請求時它都不會返回任何內容。數據庫有幾行,但Web服務返回零。請求沒有任何迴應

get '/all_users/' do 
    conn = TinyTds::Client.new(username: 'nicole', password: 'pass', dataserver: 'Nikki-PC\Mydatabase', database: 'Thedatabase') 
    recordsArray = "{\"clientList\":[" 
    clientArray = Array.new 
    sql = 'select * from dbo.ServerUsers' 
    records = conn.execute(sql) do |record| 
    client = AndroidtableClientsSearch.new(record[0], record[1], record[2], record[3], record[4]) 
    clientArray << client.to_s 
    end 
    recordsArray << clientArray.join(',') 
    recordsArray << "]}" 
    recordsArray 
end 

我很確定我正在執行,但這是我第一次使用tiny_tds,我很困惑。 謝謝你的幫助。

[編輯] 這是AndroidClientsSearch:

class AndroidtableClientsSearch 
    def initialize(username, password, phone_number, profile_state, clasa) 
    @username = username 
    @password = password 
    @phone_number = phone_number 
    @profile_state = profile_state 
    @clasa = clasa 
end 

def to_s 
    { :username => "#{@username}", :password => "#{@password}", :phone_number => "#{@phone_number}", :profile_state => "#{@profile_state}", :clasa =>"#{@clasa}"}.to_json 
end 
end 

[UPDATE] 我已修改代碼的建議,它返回一個結果,但它不從數據庫中返回數據。 這是結果:

{「recordsArray」:[「{\」username \「:\」\「,\」password \「:\」\「,\」phone_number \「:\」\「 ,\「profile_state \」:\「\」,\「clasa \」:\「\」}「]}

+0

什麼是'紀錄[N]'? _Sidenote:_用habd建立一個json字符串是一個非常糟糕的主意。之後創建一個散列並調用'JSON.dump(hash)'。 – mudasobwa

+0

我的數據庫有5列,我創建了類AndroidTableClientsSearch,有5個元素 – meow

回答

1

conn.execute(sql)不接受塊,它只是返回一個結果。之後的proc被ruby解釋器視爲「孤立進程定義」並且從未被執行。您可能會嘗試將​​放入其中,並且看到它永遠不會被調用。

的解決辦法是迭代結果:

get '/all_users/' do 
    conn = TinyTds::Client.new(...) 
    sql = 'select * from dbo.ServerUsers' 

    #       ⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓ iterate!!! 
    records = conn.execute(sql).each_with_object([]) do |record, memo| 
    client = AndroidtableClientsSearch.new(*5.times.map { |i| record[i] }) 
    memo << client.to_s 
    end 

    require 'json' 
    JSON.dump(clientList: records) 
end 
+0

嘿,謝謝你的建議,它真的幫助,但我仍然得到一個空的JSON,因爲如此: 「recordsArray」:「{」username「 「」,「password」:「」,「phone_number」:「」,「profile_state」:「」,「clasa」:「」}「 – meow

+0

在迭代器中打印出'record.inspect',你會得到一個印象出了什麼問題。 – mudasobwa

+0

record.inspect顯示數據在那裏,但它在某種程度上丟失的方式 – meow

相關問題