Problème de librairies

Anwylyd
Messages postés
3
Date d'inscription
jeudi 1 octobre 2009
Statut
Membre
Dernière intervention
3 mai 2012
- 2 mai 2012 à 10:55
Anwylyd
Messages postés
3
Date d'inscription
jeudi 1 octobre 2009
Statut
Membre
Dernière intervention
3 mai 2012
- 3 mai 2012 à 08:14
Bonjour.

D'abord n'étant ps très habituée à poster, je ne saurais être sûre d'avoir posté mon message où il faut, je demande donc votre indulgence et si possible de m'indiquer où je devrais poster si je me suis effectivement trompée.

J'ai besoin de vos lumières sur un problème qui me gêne bcp. Pt-être ai-je mal cherché, toujours est-il que je ne trouve pas de solution.

Je travaille actuellement sur un projet Androïd sous la plateforme Basic4Android.

Le but est de se connecter à une base de données Sql Server distante depuis le programme android en utilisant un webservice.

1- D'abord ds le cas d'une exécution avec une bd du serveur local, on a un lien ds le genre:

http://localhost/wsce/wsce.aspx?query=selec%20*%20from%20dbo.Client

Lorsqu'on veut exécuter avec une bd du serveur distant, je suis obligée de passer par la commande de visual studio "Afficher ds le navigateur" et le lien obtenu est du genre:

http://localhost:59568/wsce/wsce.aspx?query=selec%20*%20from%20dbo.Article

Sans le :59568 le résultat de la requête n'est pas affiché et une erreur est envoyée coe quoiles informations de connexion sont erronées.

Ma question ici est de savoir s'il y a quelque chose à faire pour optimiser le code. J'ai modifié le code proposé ici.

2- Ds le code androïd il est question d'afficher le résultat en utilisant le format JSON. et ds le code proposé tjrs ici on utilise le JSONParser.

Le problème ici c'est que la compilation échoue en envoyant l'erreur suivante :

Error parsing program.
Error description: Unknown type: jsonparser
Are you missing a library reference?
Occurred on line: 34
Dim parser As JSONParser

Soit que la librairie JSON manque si j'ai bien cerné l'erreur. Maintenant mon problème est que j'ignore comment intégrer cette librairie au projet android.

Merci de votre aide.

J'oubliais, j'utilise un serveur asp .net.

Voici le code android modifié

Sub Process_Globals
Dim ServerUrl As String
ServerUrl = "http://localhost/WebServiceRBA/WebServiceRBA.aspx"
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
If FirstTime Then
HttpUtils.CallbackActivity = "Main"
HttpUtils.CallbackJobDoneSub = "JobDone"
End If

HttpUtils.PostString("Job1", ServerUrl, "SELECT NomPrenom, Telephone FROM dbo.CLIENT")
End Sub

Sub Activity_Resume
If HttpUtils.Complete = True Then JobDone(HttpUtils.Job)
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub JobDone (Job As String)
If HttpUtils.IsSuccess(ServerUrl) Then
Dim parser As JSONParser
Dim response As String
response = HttpUtils.GetString(ServerUrl)
parser.Initialize(response)
Dim rows As List
rows = parser.NextArray

'work with result
'rows is a List. Each item is a Map with the columns names as keys and the db values as the values.
For i = 0 To rows.Size - 1
Log("Rows #" & i)
Dim m As Map
m = rows.Get(i)
Log("NomPrenom=" & m.Get("NomPrenom")) 'log the values of col1 and col2
Log("Telephone=" & m.Get("Telephone"))
Next
End If
HttpUtils.Complete = False
End Sub

et le code du webservice

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs ec)
{
using (SqlConnection cn = new SqlConnection("Server=BASIA-DC01;Database=RESTOBAR_MANAGER;User Id=BASIA2;Password=BASIA2")) //change as needed
//Provider=SQLOLEDB.1;Password=BASIA2;Persist Security Info=True;User ID=BASIA2;Initial Catalog=RESTOBAR_MANAGER;Data Source=BASIA-DC01
{
using (StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8))
{
Response.ContentType = "text/plain";
string c;
c = Request.QueryString["query"]; //for debugging with the browser
//you can set the query by adding the query parameter For ex: http://127.0.0.1/test.aspx?query=select * from table1
if (c == null)
c = sr.ReadToEnd();
try
{
SqlCommand cmd = new SqlCommand(c, cn);
cn.Open();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
while (rdr.Read())
{
Dictionary<string, object> d = new Dictionary<string, object>(rdr.FieldCount);
for (int i =0;i < rdr.FieldCount;i++)
{
d[rdr.GetName(i)] = rdr.GetValue(i);
}
list.Add(d);
}
JavaScriptSerializer j = new JavaScriptSerializer();
Response.Write(j.Serialize(list.ToArray()));

} catch (Exception e)
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = 500;
Response.Write("Error occurred. Query=" + c + "\n");
Response.Write(e.ToString());

}
Response.End();
}
}
}
</script>

Impossible n'est pas toi !!!

2 réponses

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
2 mai 2012 à 11:30
Salut,

Tu passes la requête SQL en paramètre !!!

Attends toi à ce qu'un petit malin tente un DROP TABLE Article en modifiant la requête...
0
Anwylyd
Messages postés
3
Date d'inscription
jeudi 1 octobre 2009
Statut
Membre
Dernière intervention
3 mai 2012

3 mai 2012 à 08:14
c'est évident que quelqu'un va avoir envie d'essayer. Je teste juste si le Web Service marche en faisant de la sorte.

Hier j'ai trouvé plusieurs dll JSON. L'ennui c'est que je me demande laquelle est la bonne. Ms à travers ls pages rencontrées, j'ai cru voir un peu plus d'utilisateurs du JSON de Newton Soft.

Toutefois mon problème reste entier. Je ne sais toujours pas comment appeler la dll ds le code androïd pour pouvoir l'utiliser. Pourriez vous m'éclairer s'il vous plaît ?

Impossible n'est pas toi !!!
0