Prezados,
Segue exemplo de como trabalhar com OleDB e Oracle no Mobile:
OBSERVAÇÃO IMPORTANTE:
PARA CONECTAR NO BANCO COM SEGURANÇA CRIE NO PROJETO CONSTANTES E NELAS DEFINA OS VALORES
POIS SE CASO DECOMPILAR O PROJETO JAVA A ONDE FOI COLOCADO CONSTANTS ELA NAO SAO DECOMPILADAS
FICANDO ASSIM OFUSCADA ESSA INFORMAÇÃO E EVITANDO A INVASAO NO SEU BANCO DE DADOS.
EXEMPLO:
ipExterno = 188.155.20.70
conexao = X
usuario = Y
senhaBanco = Z1W5C9V7N5B3T4Q6T5C8B5N2X3Y1Z2A7M8K9L6P3T
conexaoOle = PADRAO
tipoconexao = ABACAXI
AS
PROCEDURES ABAIXO VAO PERMITIR CRIAR UM DATA SOURCE NA
MEMORIA DO CELULAR PROVENIENTE DIRETAMENTE DO SERVIDOR ORACLE,
ACESSO NATIVO USANDO OS COMANDOS SQL DO ORACLE COMO SE
ESTIVESSE NO PLSQL.
Procedure ConectaBanco()
ConnectionNum is int
IF gTipo=False THEN
ConnectionNum = SQLConnectWS(ipExterno, ...
conexao, usuario, senhaBanco,conexaoOle,tipoconexao)
ELSE
ConnectionNum = SQLConnectWS(ipInterno, ...
conexao, usuario, senhaBanco,conexaoOle,tipoconexao)
END
IF ConnectionNum <> 0 THEN
RESULT True
ELSE
SQLInfo()
Error("A conexão falhou. " + CR + ...
"Erro: " + ...
SQL.Error + CR + SQL.MesError)
RESULT False
END
Procedure DesconectaBanco()
SQLDisconnect()
PROCEDIMENTOS DE IMPORTAÇÃO DAS CONFIGURAÇÕES
Procedure View_Config()
ok is boolean = False
sSQL is string = "select * from mir_conf_cidadecorp t where t.status=1"
bExecutaSql is boolean = SQLExec(sSQL,"Qry_Config")
Win_Principal.PBAR_Config=0
IF bExecutaSql THEN
HDeleteAll(T001_Config)
WHILE SQLFetch("Qry_Config")
Win_Principal.PBAR_Config+=1
T001_Config.T001_Descricao=SQLGetCol("Qry_Config",1)
T001_Config.T001_Valor=SQLGetCol("Qry_Config",2)
T001_Config.T001_Status=SQLGetCol("Qry_Config",3)
ok = HAdd(T001_Config)
IF ok = False
Log(ErrorInfo())
END
END
Win_Principal.PBAR_Config=100
ELSE
Info("Erro de execução SQL","Relate p/ Miron.")
END
PROCEDIMENTOS DE IMPORTAÇÃO DO CADASTRO DE PRODUTOS
Procedure View_Produto()
nLinhas is int
IF ConectaBanco() THEN
sSql2 is string = "select count(p.seqproduto) nlinhas from vcorp_produto p"
bExecutaSql2 is boolean = SQLExec(sSql2,"Qry_Produto2")
Multitask(1)
IF bExecutaSql2 THEN
WHILE SQLFetch("Qry_Produto2") = 0
nLinhas = SQLGetCol("Qry_Produto2",1)
END
ELSE
Info("Erro de execução SQL","Relate p/ Miron.")
RETURN
END
SQLClose("Qry_Produto2")
nLoops = RoundUp(nLinhas/100,0)
Win_Principal.PBAR_Produto..MaxValue=nLoops
Win_Principal.PBAR_Produto=0
HDeleteAll(T002_Produto)
Multitask(1)
FOR i = 1 TO nLoops
Win_Principal.PBAR_Produto+=1
sSql is string = "select * from vcorp_produto where rownum<="+i*100+" and rownum>="+(i-1)*100+1
bExecutaSql is boolean = SQLExec(sSql,"Qry_Produto")
Multitask(1)
ok is boolean
sErro is string ="Erros ao gravar produtos : " + CRLF
IF bExecutaSql THEN
WHILE SQLFetch("Qry_Produto") = 0
T002_Produto.T002_SeqProduto=SQLGetCol("Qry_Produto",1)
T002_Produto.T002_Desccompleta=SQLGetCol("Qry_Produto",2)
T002_Produto.T002_Seqfamilia=SQLGetCol("Qry_Produto",3)
T002_Produto.T002_EAN=SQLGetCol("Qry_Produto",4)
ok = HAdd(T002_Produto)
IF ok=False THEN
sErro+=SQLGetCol("Qry_Produto",1)+CRLF
Info("Erro: "+ErrorInfo())
END
END
Multitask(1)
ELSE
Info("Erro de execução SQL","Relate p/ Miron.")
RETURN
END
LogApp(sErro)
END
SQLClose("Qry_Produto")
END
DesconectaBanco()
OUTRO EXEMPLO
sSqlx = "select * from vcorp_produto p where p.dtaalteracao>=fdata('"+DtaUltImportacao+"') and p.dtaalteracao<trunc(sysdate)"
bExecutaSql is boolean = SQLExec(sSqlx,"Qry_Produto")
Multitask(1)
sErro is string ="Erros ao gravar produtos : " + CRLF
IF bExecutaSql THEN
Win_Principal.PBAR_Produto..MaxValue=100
Win_Principal.PBAR_Produto=0
WHILE SQLFetch("Qry_Produto") = 0
ok=HReadSeekFirst(T002_Produto, T002_SeqProduto, SQLGetCol("Qry_Produto",2))
T002_Produto.T002_SeqProduto=SQLGetCol("Qry_Produto",2)
T002_Produto.T002_Desccompleta=SQLGetCol("Qry_Produto",3)
T002_Produto.T002_Seqfamilia=SQLGetCol("Qry_Produto",4)
T002_Produto.T002_EAN=SQLGetCol("Qry_Produto",5)
HSave(T002_Produto)
END
Win_Principal.PBAR_Produto=100
Multitask(1)
ELSE
Info("Erro de execução SQL","Relate p/ Miron.")
END
LogApp(sErro)
SQLClose("Qry_Produto")
RESULTADO OBTIDO:
33.000 REGISTROS EM 2.500KB HFSQL e busca local instantânea
https://www.facebook.com/photo.php…
https://www.facebook.com/photo.php…
https://www.facebook.com/photo.php…
https://www.facebook.com/photo.php…
https://www.facebook.com/photo.php…
Agora
com esse exemplo é só dar asas a imaginação, esta acessando de forma
segura e obtendo em seu celular todos os recursos do seu servidor de
Banco de dados Oracle usando WINDEV MOBILE em uma aplicação Android em
suas mãos.
Cada dia fico mais feliz e impressionado com o poder
que a PcSoft nos dá e também a grande responsabilidade que devemos ter
com nossos clientes em ofuscar o código para evitar invasões de
terceiros pelo aplicativo, pois nos oferece recursos que em outras
linguagens são complexas e podemos notar aqui nesse exemplo a
simplicidade do código empregado e dos recursos da ferramenta, o quanto
ela é facilmente lida as instruções, ou seja, show de bola!
Sucesso a todos!
Prezados,
Para ofuscar use CONSTANTS, segue exemplo:
CONSTANTS
ipExterno = 188.155.20.70
conexao = X
usuario = Y
senhaBanco = Z1W5C9V7N5B3T4Q6T5C8B5N2X3Y1Z2A7M8K9L6P3T
conexaoOle = PADRAO
tipoconexao = ABACAXI
END
OBSERVAÇÃO:
NUNCA DEIXE O SEU PROJETO ANDROID SEM USAR ESSE PROCEDIMENTO DE SEGURANÇA
--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Prezados,
Outra forma de Ter os dados seguros é armazenar em uma tabela os dados de forma criptografada ou com senha:
Desenvolva
uma tela que será chamada na primeira vez e grave na tabela local com
senha na tabela e criptografe os dados armazenados.
Assim seria
outra técnica para proteger os dados. Uma vez que informe e logue com
sucesso armazena na tabela segura e caso queira reiniciar os dados no
sistema, apagaria os dados dessa configuração e solicitaria novamente o
valor.
Sucesso em seus estudos!
Publicado em março, 01 2016 - 8:55 PM
|
Importante Mencionar que para isso tem que ter o Reserved Webdev Server instalado
-- Atte. Willian Fernando
|
|
|
Publicado em março, 05 2016 - 3:21 PM
|
Willian Fernando a écrit :
Tem que aclarar esse ponto nem todos sabem disso
Importante Mencionar que para isso tem que ter o Reserved Webdev Server instalado
--
Atte. Willian Fernando
-- Atte. Willian Fernando
|
|
|
|
|