Приложение на Xamarin forms (android) не подключается к базе данных Sql Server

Столкнулся с проблемой: приложение на Xamarin form не работает с локальной базой данных. Брандмаузер выключен, в Sql Server включены все службы (проверено на моем готовом приложении на windows form).

using Microsoft.SqlServer;
using Microsoft.SqlServer.Server;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Запись_к_врачу_12;
 
 
namespace Запись_к_врачу_12
{
 
    public partial class MainPage : ContentPage
    {
        public class zapisList
        {
            public int zapis_id { get; set; }
            public string Z_FIO { get; set; }
            public string Polis { get; set; }
            public string date_z { get; set; }
        }
 
        SqlConnection sqlConnection;
        public MainPage()
        {
            InitializeComponent();
            string srvrdbname = "site";
            string srvrname = "127.0.0.1";
            string srvrusername = "SH1F";
            string srvrpassword = "1379";
            string sqlconn = $"Data Source={srvrname};Initial Catalog={srvrdbname};User ID={srvrusername};Password={srvrpassword}";
            var conString = "Data Source=127.0.0.1;Database=site;" +
            "User ID=SH1F;Password=1379;Connect Timeout=30;" +
            "Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;" +
            "MultiSubnetFailover=False";
 
            sqlConnection = new SqlConnection(conString);
        }
        protected override void OnAppearing()
        {
            button1.Clicked += Button1_Clicked;
        }
 
 
            private async void Button1_Clicked(object sender, EventArgs e)
        {
            try
            {
                sqlConnection.Open();
                using (SqlCommand command = new SqlCommand("INSERT INTO dbo.zapis VALUES(@zapis_id, @Z_FIO , @Polis ,@date_z)", sqlConnection))
                {
                    command.Parameters.Add(new SqlParameter("zapis_id", id1.Text));
                    command.Parameters.Add(new SqlParameter("Z_FIO", fnl.Items[fnl.SelectedIndex]));
                    command.Parameters.Add(new SqlParameter("Polis", OMS.Text));
                    command.Parameters.Add(new SqlParameter("date_z", date.Items[date.SelectedIndex]));
                    command.ExecuteNonQuery();
                }
                sqlConnection.Close();
                await App.Current.MainPage.DisplayAlert("Уведомление", "ок", "ОК");
            }
            catch (Exception ex)
            {
                await App.Current.MainPage.DisplayAlert("Ошибка", ex.Message, "ОК");
                throw;
            }
        }
    }
}

Ответы (1 шт):

Автор решения: Napachio

Пробуй заменить свой conString а всё что выше закомментировать. Работает если в SQL Server Managment Studio подключение через "Проверка подлинности SQL Server":

conString = "Server=(Имя сервера как при подключении SQL Managment);Database=(Название базы данных как в SQL);User Id=(Учётная запись в SQL);Password=(Пароль от учётной записи SQL);Trusted_Connection=True;";

В ином случае, если стоит "Проверка подлинности Windows":

conString = "Server=(Имя сервера как при подключении в SQL Server(Например: UserName\\SQLEXPRESS));Database=(Название базы данных(Например: test_01_02_03));Trusted_Connection=True;";

Данная проблема решается если проблема в подключении. Если не понятно со скобками то:

conString = "Server=UserName\\SQLEXPRESS;Database=test_01_02_03;User Id=sa;Password=123;Trusted_Connection=True;";
conString = "Server=UserName\\SQLEXPRESS;Database=test_01_02_03;Trusted_Connection=True;";

По хорошему бы тебе проверить подключение:

  1. Создать текстовый файл (Название любое). Задать ему фармат .udl и запустить (Там ввести все данные и проверить подключение).
  2. SQL Server Profiler - создаешь трассировку и подключаешься. Заходишь обратно в приложение (не закрывая Profiler) и пробуешь событие произвести, если в Profiler не реагирует, то проблема в подключении, что может тебе помочь выше перечисленное...
→ Ссылка