Italian Errore su utilizzo libreria: mssql-jdbc-7.0.0.jre8.jar

enccap

New Member
Licensed User
Buongiorno, Sono un nuovo utilizzatore di B4A per imparare anche B4J devo ancora studiare per arrivare Ai Livelli di MOLTI di Voi.

Inserisco il mio progetto, che al momento della compilazione mi restituisce questo errore:
Uncaught translation error: com.android.dx.cf.code.SimException: invalid opcode ba (invokedynamic requires --min-sdk-version >= 26)


Ho dovuto inserire
#AdditionalJar: mssql-jdbc-7.0.0.jre8.jar

Nella procedura Starter ho aggiunto le seguenti istruzioni in quanto devo eseguire una store procedure di SQLServer che aggiorna i saldi di magazzino e da quel momento la compilazione mi restituisce l'errore precedente

------ istruzioni aggiunte in Starter
'inizio transazione
MioDBSQL.BeginTransaction

'agiorna usando ExecQuery di JdbcSQL, (una sola query di aggiornamento sia per quantità che per colli)
MioSQL = "UPDATE movmag"
MioSQL = MioSQL + "SET mm_colli =" + MovCommsCls.Colli + ", mm_quant =" + MovCommsCls.Quantita
MioSQL = MioSQL + "FROM movmag"
MioSQL = MioSQL + "WHERE movmag.mm_commeca =" + CommsRic + "AND movmag.mm_tipork = 'T' AND movmag.mm_numdoc =" + MovCommsCls.NumDoc
Log ($ "MioSQL:" $ {MioSQL} "$)
MioDBSQL.ExecNonQuery (MioSQL)
Try
Success = True
Catch
Log (LastException)
End Try
'attiva la Store Procedure - dbo.bussp_aggartpro9 - con JdbcSQL
MSSQLProcedure.ProcedureCall = "{call dbo.bussp_aggartpro9 (?,?,?,?,?,?,?,?)}"
'Assegnazione dei parametri dello Store Procedure con JdbcSQL
MSSQLProcedure.AddInputParameter (1, MSSQLProcedure.SQLVARCHAR, "T")
MSSQLProcedure.AddInputParameter (2, MSSQLProcedure.SQLSMALLINT, MovCommsCls.Anno)
MSSQLProcedure.AddInputParameter (3, MSSQLProcedure.SQLVARCHAR, MovCommsCls.Serie)
MSSQLProcedure.AddInputParameter (4, MSSQLProcedure.SQLINTEGER, MovCommsCls.NumDoc)
MSSQLProcedure.AddInputParameter (5, MSSQLProcedure.SQLSMALLINT, "1")
MSSQLProcedure.AddInputParameter (6, MSSQLProcedure.SQLDATE, "01/01/" + MovCommsCls.Anno)
MSSQLProcedure.AddInputParameter (7, MSSQLProcedure.SQLINTEGER, "6")
MSSQLProcedure.AddInputParameter (8, MSSQLProcedure.SQLVARCHAR, MovCommsCls.Codditt)
'esegue una Store Procedure con JdbcSQL
MSSQLProcedure.ExecProcedure (MioDBSQL) 'MSSQLConnection)

MyResultSet = MSSQLProcedure.FetchResultSet

'fine transazione
MioDBSQL.TransactionSuccessful

---------Fine istruzioni aggiunte in Starter


---------Modifiche apportate al file Manifest

AddManifestText(
<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="28"/>
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
CreateResourceFromFile(Macro, Themes.DarkTheme)

---------Fine modifiche apportate al file Manifest



Grazie per la Vostra attenzione

Enrico
 

Attachments

  • BarigSQL.zip
    30 KB · Views: 273

LucaMs

Expert
Licensed User
Longtime User
Ciao.
MioSQL = "UPDATE movmag"
MioSQL = MioSQL + "SET mm_colli =" + MovCommsCls.Colli + ", mm_quant =" + MovCommsCls.Quantita
L'operatore di concatenazione stringhe in B4A (e gli altri) non è il segno più ma la "e commerciale" &.
Per cui...
MioSQL = MioSQL & "SET mm_colli =" & MovCommsCls.Colli & ", mm_quant =" & MovCommsCls.Quantita


Nota che è più facile e comodo (oltreché più sicuro) usare le versioni 2 delle query, in questo caso ExecNonQuery2 anziché ExecNonQuery (puoi vedere e copiare un esempio mentre digiti il comando stesso).



Non è necessario che il min sdk sia 26 (su molti dispositivi non potresti installare l'app, con questo livello minimo), mentre il 28 come target va bene.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
ma questa riga
B4X:
 Log ($ "MioSQL:" $ {MioSQL} "$)
ti mostra la query corretta ??
Non credo, non hai inserito gli spazi tra i comandi
 
Top