2012-02-11 16 views
8

Mi jefe quiere que use cfscript en lugar de etiquetas para la interacción de la base de datos. ¿Alguien sabe de algún buen tutorial? Compré el libro de desarrollo de aplicaciones Adobe ColdFusion, vol. 2. Pero no tiene mucho sobre scripting. Hice google y encontré this site, pero no explicó mucho.ColdFusion: intentando consultar la base de datos en CFScript

¿Alguien sabe de algún buen tutorial sobre el acceso a la base de datos en CFScript?

Básicamente tengo que convertir el siguiente para el uso CFScript:

<cfquery name="drafts" datasource="ICEchat"> 
    SELECT * from Messages where IsTemp=1 and LinkA=#FORM.LinkA# and LinkB=#FORM.LinkA# 
</cfquery> 
<cfif drafts.recordcount GT '0'> 
    <cfquery name="Attachments" datasource="ICEchat"> 
     SELECT * FROM Attachments where id=2 
    </cfquery> 
    { Message:"<cfoutput query="drafts">#Message#</cfoutput>", Attachments:[<cfoutput query="attachments"> 
     "#url#"<cfif attachments.currentRow LT attachments.recordcount>,</cfif> 
    </cfoutput>]} 
<cfelse> 
    <cfquery name="addrecord" datasource="ICEchat"> 
     INSERT INTO Messages 
     VALUES(1,1,' ',1) 
    </cfquery> 
    { Message:"NA", Attachments:[]} 
</cfif> 
+3

Tienes razón, Jake, que fue bastante horrible. Pero me llevó menos de un minuto arreglarlo. ¿Cuál es más constructivo: quejarse o arreglarlo? –

+0

Bueno, aquí está la documentación oficial. http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSe9cbe5cf462523a0693d5dae123bcd28f6d-7ffb.html –

+1

@AdamTuttle tienes razón, por supuesto. Más virtud que se encuentra al pasar por alto tales cosas. –

Respuesta

9

Desde el 4th link en Google para "tutorial consulta cfscript":

<CFSCRIPT> 
    myQry = new Query(); // new query object  
    myQry.setSQL("select bookid, title, genre from app.books where bookid = :bookid"); //set query 
    myQry.addParam(name="bookid",value="5",CFSQLTYPE="CF_SQL_INTEGER"); // add query param 
    qryRes = myQry.execute(); // execute query 
    writedump(qryRes.getResult().recordcount, true); // get resultcount 
    writedump(qryRes.getResult(), false); // dump result 
    writeoutput('<BR>'); 
</CFSCRIPT> 

Eso debería decirle todo lo que necesita saber.

Además, usted realmente no debería crear JSON manualmente, no importa cuán simple sea. Use serializeJson().

+0

Hola puedo consultar y ejecutar el objeto Query, pero cuando trato de obtener información sobre el borrador, es decir, draft.record count o draft.Messag [0], aparece un error que dice draft.record count define o draft.Messag [0 ] cualquier idear? –

+0

Hola, no estaba obteniendo la información del objeto Result. Gracias por tu ost me dio suficiente enfoque para terminar mi proyecto :) –

+0

Estás poniendo mucha fe en serializeJson() Adam :) –

6

No probé esto, pero esto debería hacerlo.

<cfscript> 
    local.drafts = new Query(); 
    local.drafts.setDatasource("ICEchat"); 
    local.drafts.addParam(name="linkA", value="#form.linkA#", cfsqltype="CF_SQL_VARCHAR"); 
    local.drafts.addParam(name="linkB", value="#form.linkB#", cfsqltype="CF_SQL_VARCHAR"); 
    local.drafts.setSQL("SELECT * from Messages where IsTemp=1 and LinkA = :linkA and LinkB = :linkA"); 
    local.drafts.execute().getResult(); 

    if (local.drafts.recordcount GT 0) { 
     local.attachments = new Query(); 
     local.attachments.setDatasource("ICEchat"); 
     local.attachments.setSQL("SELECT * FROM Attachments where id=2"); 
     local.attachments.execute().getResult(); 
     WriteOutput("{ Message: "); 
     for (i=1; i LTE local.drafts.recordcount; i=i+1) { 
     WriteOutput(local.drafts.message[i]); 
     } 
     WriteOutput(", Attachments: "); 
     for (i=1; i LTE local.attachments.recordcount; i=i+1) { 
     WriteOutput(local.drafts.url[i]); 
     if (i LT local.attachments.recordcount) { 
      WriteOutput(", "); 
     } 
     } 
     WriteOutput("}"); 
    } else { 
     local.q = new Query(); 
     local.q.setDatasource("ICEchat"); 
     local.q.setSQL("INSERT INTO Messages VALUES(1,1,' ',1)"); 
     local.q.execute(); 
     WriteOutput("{ Message:"NA", Attachments:[]}"); 
    } 
</cfscript> 
+0

No puedo consultar y ejecutar el objeto Query, pero cuando trato de obtener información sobre el equerry, es decir, drafts.record count o draft.Messag [0], aparece un error que indica que Drafts.record count define –

-2

He estado buscando una solución para el mismo error. No obtengo errores definidos ni errores de construcción. He estado hablando con Ray Camden el día anterior, pero todo lo que ha sugerido no es lo que necesito tampoco. He estado trabajando en la conversión de un sitio web de las etiquetas CF estándar a cfscript.

Ray sugirió que .execute(); es lo que saca el recordcount y sugirió que esto era todo lo que se necesitaba: x = queryExecute(); obtendría el número de registro, siendo (x) la consulta. Sugirió no usar getPrefix(); pero leí que .getPrefix(); es lo que saca el recordcount Tiene experiencia. Estoy seguro de que conoces a Ray Camden, pero sigo recibiendo el mismo error sin importar lo que intente hacer dentro de mi código.

+2

FYI, Stack Overflow utiliza un formato de preguntas y respuestas (preguntas y respuestas).Esta sección es solo para "respuestas". Si crees que has encontrado una solución diferente a las que ya sugeriste, reformula lo anterior en forma de "respuesta". De lo contrario, se puede eliminar como un [comentario] (http://stackoverflow.com/help/privileges/comment) en lugar de una "respuesta" a la pregunta formulada. – Leigh

Cuestiones relacionadas