使用Xamarin無法連接Sqlserver,try-catch捕獲錯誤【Snix_Connect (provider: SNI_PN7, error: 40 - SNI_ERROR_40)】,無前人指點,畢竟用C#開發安卓真是少見。各方查找,頭疼的問題總算解決好了,趕緊記錄一波。
1.啓用TCP/IP
2.啓用所有TCP/IP地址
雙擊上圖紅框中的TCP/IP,進入設置屬性。點擊IP地址,把所有地址都啓用。
3.重啓服務
4.檢查連接字符串
在安卓裏要使用10.0.2.2來訪問你的本地主機,可別使用localhost,端口和ip之間用逗號隔開,而不是冒號。
附上一段代碼希望能幫到你
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace App1.Model
{
public class GoodsService
{
string sqlserver_connstr = "Server=10.0.2.2,1433;Database=fl_goods;uid=sa;Password=123;";//pooling=false;
public void test() {
//安卓連接數據庫屬於耗時操作,不能在主線程操作
Task task = new Task(() =>
{
try {
SqlConnection mycon = new SqlConnection(sqlserver_connstr);
mycon.Open();
string sql = "select * from users";
SqlCommand com = new SqlCommand(sql, mycon);
SqlDataReader read = com.ExecuteReader();
while (read.Read())
{
string s1 = read["username"].ToString();
string s2 = read["sex"].ToString();
string s3 = read["age"].ToString();
}
read.Close();
mycon.Close();
mycon.Dispose();
}catch (Exception err) {
string errmsg = err.Message;
}
});
task.Start();
}
}
}
5.希望你別犯這種低級錯誤