Приложение на 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;";
По хорошему бы тебе проверить подключение:
- Создать текстовый файл (Название любое). Задать ему фармат .udl и запустить (Там ввести все данные и проверить подключение).
- SQL Server Profiler - создаешь трассировку и подключаешься. Заходишь обратно в приложение (не закрывая Profiler) и пробуешь событие произвести, если в Profiler не реагирует, то проблема в подключении, что может тебе помочь выше перечисленное...