【发布时间】:2014-06-06 17:53:44
【问题描述】:
我目前的应用程序目标是从 sql 数据库中提取信息只读进程。并通过 iOS 应用程序进行投影。我目前在建立通信方面遇到了麻烦,并且不确定从哪里开始。
按钮位于:ViewController.cs
IList<string> NameList = new List<string>();
string connectionString = "Server=******;Database=******;User Id=******;Password=********
try
{
IDbConnection dbcon;
using (dbcon = new SqlConnection(connectionString))
{
bcon.Open();
using (IDbCommand dbcmd = dbcon.CreateCommand())
{
string sql = "Select * from people";
dbcmd.CommandText = sql;
using (IDataReader reader = dbcmd.ExecuteReader())
{
while (reader.Read())
{
string FirstName = reader["ForeName"].ToString();
NameList.Add(FirstName);
}
reader.Close();
dbcon.Close();
title.Text = NameList.FirstOrDefault();
}
}
}
catch
{
我已经在 iOS 之外并在不同的仅 Visual Studio 环境中测试了连接字符串,它完全可以正常工作。我还阅读了另一种方法,有人告诉我不应该尝试在 iOS 应用程序的 UI 上进行查询,我应该使用网络服务器,但我不知道如何使用 sql 服务器启动该任务。
我得到的错误:
{System.NotSupportedException:不支持 CodePage 1252 在 System.Text.Encoding.GetEncoding(Int32 代码页)[0x0015d] 在 /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Text/Encoding.cs:479 在 Mono.Data.Tds.TdsCharset.GetEncodingFromSortOrder (Int32 sortId) [0x00015] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsCollation.cs:316 在 Mono.Data.Tds.TdsCharset.GetEncodingFromSortOrder (System.Byte[] collation) [0x00007] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsCollation .cs:310 在 Mono.Data.Tds.TdsCharset.GetEncoding (System.Byte[] collation) [0x0000b] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsCollation .cs:288 在 Mono.Data.Tds.Protocol.Tds.ProcessEnvironmentChange () [0x0024f] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs:1650 在 Mono.Data.Tds.Protocol.Tds.ProcessSubPacket () [0x0011f] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs:1806 在 Mono.Data.Tds.Protocol.Tds.NextResult () [0x0004a] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs:641 在 Mono.Data.Tds.Protocol.Tds.SkipToEnd () [0x00005] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs:714 在 Mono.Data.Tds.Protocol.Tds70.Connect (Mono.Data.Tds.Protocol.TdsConnectionParameters connectionParameters) [0x005b5] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data .Tds.Protocol/Tds70.cs:390 在 Mono.Data.Tds.Protocol.Tds80.Connect (Mono.Data.Tds.Protocol.TdsConnectionParameters connectionParameters) [0x00000] 在 /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Tds/Mono.Data .Tds.Protocol/Tds80.cs:87 在 System.Data.SqlClient.SqlConnection.Open () [0x001a9] 在 /Developer/MonoTouch/Source/mono/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs:566 } 基础:{System.SystemException}
【问题讨论】:
-
我假设您在尝试连接时遇到异常?如果是这样,请将其添加到您的问题中。
-
请不要这样做。通过开放通道从远程客户端直接访问您的数据库服务器是非常不安全和可怕的想法。 WebServices 通常是在客户端和数据库服务器之间建立通信的最佳方式。
-
@Jason 我确实说过我知道这些问题,只是不知道如何实施。
-
很公平,您使用的是 Xamarin.iOS 的商业版吗?执行此操作时遇到什么错误/异常?
-
是的,我用的是商业版,贴出超长的错误:s