我使用C#和MonoTouch的一个iphone项目。 我需要使用SQL Azure数据库。 我的问题是,我似乎无法使用MonoTouch的得到连接。 我可以做以下做工精细的代码使用的Visual Studio 2012上使用Windows内置8位机的本地控制台应用程序但是,当我尝试将它移植到一台iMac和使用的MonoDevelop / MonoTouch的我的iPhone应用程序崩溃。 我得到的错误是:
System.NotImplementedException:客户端和服务器之间发送的数据SSL加密未实现。
我谷歌了一下周围,发现似乎来形容我的确切问题的bug报告在这里 。 我注意到它的快两岁了,所以我不知道这仍然是未实现的。
所以,我试图改变StringBuilder.Encrypt的值= TRUE; 为false。 但是,它仍然崩溃,我得到的错误:
Mono.Data.Tds.Protocol.TdsInternalException:服务器关闭了连接。 ---> System.IO.IOException:连接丢失
在两种情况下,应用程序崩溃时conn.Open(); 叫做。
我很坚持,我没有选择,只能使用SQL Azure的。 因此,如果任何人都可以提出一个解决方案或解决了我的问题,我会非常感激。 提前致谢!
string userName = "<username>@<myservername>";
string password = "<password>";
string dataSource = "<myservername>.database.windows.net";
string databaseName = "<dbname>";
SqlConnectionStringBuilder connStringBuilder;
connStringBuilder = new SqlConnectionStringBuilder();
connStringBuilder.DataSource = dataSource;
connStringBuilder.InitialCatalog = databaseName;
connStringBuilder.Encrypt = true;
connStringBuilder.TrustServerCertificate = false;
connStringBuilder.UserID = userName;
connStringBuilder.Password = password;
using (SqlConnection conn = new SqlConnection (connStringBuilder.ToString())) {
conn.Open();
using (IDbCommand dbcmd = conn.CreateCommand()){
string sql = "Select client_username from dbo.client;";
dbcmd.CommandText = sql;
using (IDataReader reader = dbcmd.ExecuteReader()){
while( reader.Read() ){
string username = (string) reader["client_username"];
}
}
}
}