【Xamarin】解決筆記Snix_Connect (provider: SNI_PN7, error: 40 - SNI_ERROR_40)

使用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.希望你別犯這種低級錯誤

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章