2017-05-28 4 views
1

私はCFモバイルアプリケーションを作成しており、cfclientタグを使用しています。リモートデータソース接続に関する問題が発生しましたが、解決できませんでした。coldfusionモバイルアプリ - cfclientタグの下のリモートデータベースサーバーへの接続

cfclientから、CF管理者でデータソースとして定義されているデータソース文字列として "rooms"を使用しています。リモートSQL Serverに接続しています。 "Tblblogs"は "rooms"データベースに存在しますが、cfclientでは次のようなエラーが発生します:>そのようなテーブルはありません

しかし、cfclientの外側で "tblblogs"を選択する同じクエリ[blgQ]問題なし。私はなぜcfclient(管理者で定義されている)の下で正しいデータソース接続を行っていないのか分かりません。 <cfclient>

<!DOCTYPE html> 

<html > 
    <body> 
     <h2>Add Expense</h2> 
     <form > 
      <table > 
       <tr> 
        <td>Date:</td> <td><input type="date" id="dateTxt"></td> 
       </tr> 
       <tr> 
        <td>Amount:</td> <td><input type="number" id="amtTxt"></td> 
       </tr> 
       <tr> 
        <td>Description</td> 
        <td><input type="text" id="descTxt"></td> 
       </tr> 
       <tr> 
        <td colspan="2"> 
         <button type="button" id="addBtn">Add</button> 
        </td> 
       </tr> 
      </table> 
     </form> 

     <h2>Expenses:</h2> 
     <table id="expList"> 
      <tr> 
       <th>Date</th> 
       <th>Amount</th> 
       <th>Description</th> 
      </tr> 
     </table> 
    </body> 
</html> 

<script > 
    document.getElementById("addBtn").onclick = function(){ 
     addExpense(); 
    } 
</script> 


<!--- cfclient code starts here ---> 
<cfclient> 
    <cfset document.getElementById("expList").innerHTML =''> 
    <!--- on client side you do not need to pre-configure datasource ---> 
    <cfset dsn = "rooms"> 
    <cftry> 

    <!--- create database if not already created ---> 
    <cfquery datasource="rooms"> 
     create table if not exists expenses (
      id integer primary key, 
      expense_date integer, 
      amount real, 
      desc text 
     ) 
    </cfquery> 

    <!--- Get expense records from the table ---> 
    <cfquery datasource="rooms" name="expenses"> 
     select * from expense order by expense_date desc 
    </cfquery> 
    <cfset alert(expenses.amount)> 



    <!--- Loop over expenses query object and display ---> 
    <cfloop query="expenses"> 
     <cfset var tmpDate = new Date(expense_date)> 
     <cfset addExpenseRow(expense_date,amount,desc)> 
    </cfloop> 

     <cfcatch type="any" name="e"> 
      <cfset alert(e.message)> 
     </cfcatch> 
    </cftry> 

    <!--- Helper function to add epxpense row to HTML table ---> 
    <cffunction name="addExpenseRow" > 
     <cfargument name="expense_date" > 
     <cfargument name="amt" > 
     <cfargument name="desc" > 


     <cfoutput > 
      <cfsavecontent variable="rowHtml" > 
       <tr> 
        <td>#dateFormat(expense_date,"mm/dd/yyyy")#</td> 
        <td>#amt#</td> 
        <td>#desc#</td> 
       </tr> 
      </cfsavecontent> 
     </cfoutput> 

     <cfset document.getElementById("expList").innerHTML += rowHtml> 
    </cffunction> 

    <!--- Called from JS script block in response to click event for addBtn ---> 
    <cffunction name="addExpense" > 
     <cfset var tmpDate = new Date(document.getElementById("dateTxt").value)> 
     <cfset var amt = Number(document.getElementById("amtTxt").value)> 
     <cfset var desc = document.getElementById("descTxt").value> 

     <!--- TODO: Do data validation ---> 
     <cftry> 
     <!--- Insert expense row into database table --->  
      <cfquery datasource="rooms" result="result"> 
       insert into expense (expense_date,amount,desc) values(
        <cfqueryparam cfsqltype="cf_sql_date" value="#tmpDate.getTime()#">, 
        <cfqueryparam cfsqltype="cf_sql_numeric" value="#amt#">, 
        <cfqueryparam cfsqltype="cf_sql_varchar" value="#desc#"> 
       ) 
      </cfquery> 

      <cfcatch type="any" name="e"> 
       <cfset alert(e.message)> 
      </cfcatch> 
     </cftry> 


     <!--- add the new expense row to HTML table ---> 
     <cfset addExpenseRow(tmpDate,amt,desc)> 
    </cffunction> 

</cfclient> 

<cfquery datasource="rooms" name="blgQ"> 
     select * from tblblogs 
    </cfquery> 
<cfdump var="#blgQ#" 

> Blockquote 

答えて

3

<cfquery>本当に定期<cfclient>と同じものではありません。

Web SQLとの軽量な対話を意図しています。 Web SQLは普遍的にサポートされておらず、そうでない可能性があります。 <cfclient>はまた、<cfform>に悩まされたすべての問題に悩まされます。つまり、javascriptは前進しますが、このタグによって生成されたコードはそうではありません。

Client side CFML For Mobile Developmentを参照してください。

AJAXまたはRESTの方が適切かもしれないと思われます。

+0

ありがとうございますJames – RoomDU

関連する問題