【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.希望你别犯这种低级错误

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值