我是Android的新手,但现在几天在Android中做了更多的编码。现在我有一个疑问。我使用Android和SQL Lte创建了android数据库应用程序。但SQL Lite是客户端站点数据库。但现在我的要求是,我想要一个像SQL Server这样的数据库,以便将我的应用程序连接到SQL Server。所以,考虑和例子,我知道WCF。我创建了一个WCF服务,其功能如下: 我在IIS上托管了WCF因为android没有响应localhost,所以我在IIS上托管了WCF
Public string check(string username,string password)
{
SQLConnection con=new SQLConnection("Data Source=.;Database=test;Integrated Security=true");
SQLDataAdapeter ad=new SQLDataAdapter("select * from table where usrename='"+username+"'and password='"+password+"'");
Dataset ds=new Dataset();
ad.fill(ds,"table");
if(ds.Tables[0].Rows.Count>0)
{
return "true";
}
else
{
return "false";
}
}
我在本地主机中托管了WCF,以便我可以在My Android Application编码中使用此服务。
就像:
HttpGet httpGet=new HttpGet("http://192.168.1.111:8083/Service1.svc/checkLogin?username="+UserName+"&password="+Password);
//Get the response
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
InputStream stream=httpEntity.getContent();
然而,虽然代码是正确的,但我没有得到任何httpEntity。 我接受这个实体并希望通过使用如下函数将其转换为字符串:
public static String convertStreamToString(InputStream is)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
但是,它不返回任何字符串值,调试器继续捕获点。 那么我该怎样做才能从WCF获得字符串格式的结果?
答案 0 :(得分:0)
根据以上代码,我不确定如何正确地看待移动客户端应用,WCF和SQL Server。基本设计是WCF服务将在内部与SQL Azure通信并为您的数据收集数据。您的移动客户端将以暴露的方法连接到WCF服务,该方法将数据传递给移动客户端。我在上面的描述或代码片段中没有看到该架构。
我建议您使用oData WCF数据服务将任何移动应用程序连接到SQL Server。 OData服务是连接内部部署SQL Server或基于云的RDBMS(即SQL Azure)的快速简便方法。
这article解释了如何逐步完成,所以我建议您尝试一下,如果您遇到任何问题,请发布到SO,我们一定会帮到您:
大多数Android开发人员实际上更喜欢使用JSON的WCF从Android连接到SQL Server / Azure,因此您也可以查看here。