Мы с другом делаем приложение с использованием С#, WPF и Visual Studio. Мы создали функцию входа в систему с помощью MS SQL Server, и база данных находится на моем компьютере. Когда я передаю исходный код своему другу, и он открывает его в Visual Studio (на своем ПК), он не может войти в систему, как я. Каждый раз, когда он нажимает кнопку «Войти», программа мгновенно вылетает, даже не выдавая никаких ошибок.
На моем ПК, когда я нажимаю кнопку «Войти», он успешно переходит на следующую страницу, поэтому мы считаем, что это как-то связано с базой данных SQL. Как я могу сделать так, чтобы он работал и на его ПК?
Код для кнопки входа
private void UserSignInBtn_Click(object sender, RoutedEventArgs e)
{
SqlConnection sqlCon = new SqlConnection(connectionString);
try
{
if (sqlCon.State == ConnectionState.Closed)
{
sqlCon.Open();
string query = "SELECT COUNT (1) FROM tblSignUP WHERE StudentName=@StudentName AND Password=@Password";
SqlCommand sqlCmd = new SqlCommand(query, sqlCon);
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Parameters.AddWithValue("@StudentName", tbID.Text);
sqlCmd.Parameters.AddWithValue("@Password", PB.Password);
int count = Convert.ToInt32(sqlCmd.ExecuteScalar());
if (count == 1)
{
// Custom Message Box and Dim Effect
var jim = new Dim();
jim.Show();
this.Effect = new BlurEffect();
var lsmb = new Custom_MessageBoxes.LoginSuccessfulMsgBox();
lsmb.ShowDialog();
this.Effect = null;
jim.Close();
var User_Homepage = new User_Homepage();
NavigationService.Navigate(User_Homepage);
}
else
{
// Custom Message Box and Dim Effect 2
var him = new Dim();
him.Show();
this.Effect = new BlurEffect();
var rmdlgb = new ReturnMessageDialogueBox();
rmdlgb.ShowDialog();
this.Effect = null;
him.Close();
}
}
}
catch(Exception ex)
{
}
finally
{
sqlCon.Close();
}
}```
Если бы вы выполняли обработку исключений, вы, вероятно, заметили бы SqlException
.
Сделайте так, чтобы он мог получить доступ к экземпляру SQL Server на вашем ПК, или убедитесь, что у него есть файл localdb, в зависимости от используемой вами технологии. У нас недостаточно информации, чтобы давать какие-либо дополнительные советы; особенно когда у нас нет ошибок или кода
Да, на странице входа использовалась обработка исключений try/catch. Я обновил исходный пост с кодом входа
Могу добавить свой код в пост за исключением
Если строка подключения указывает на вашу локальную базу данных, ваш друг не сможет получить доступ к вашей базе данных, используя ту же строку подключения. Вы должны прочитать, как настроить Sql Server, чтобы он был виден между машинами, и как подготовить строку подключения для вашего друга.
Ваш блок catch
пуст. Это не «обработка» исключения, а его игнорирование.
Так должен ли я как-то изменить строку подключения? или база данных должна быть установлена на ПК моего друга, у него также есть MS SQL Server
@JojoAmankwa, если вы хотите, чтобы оба экземпляра приложения использовали одну и ту же базу данных и данные, обе строки подключения должны указывать один и тот же источник данных (имя вашего ПК). Убедитесь, что ваш экземпляр SQL имеет номер настроен на разрешение удаленных подключений, а порт открыт в брандмауэре Windows.
И не используйте добавить со значением. Научитесь правильно параметризовать запросы.
Введите следующее в Catch и просмотрите ошибку на машине вашего друга, она сообщит вам, в чем именно заключается ошибка, когда вы заглянете в средство просмотра событий на его машине.
using (EventLog eventLog = new EventLog("Application"))
{
eventLog.Source = "SQL Error: From My Application";
eventLog.WriteEntry(ex.StackTrace, EventLogEntryType.Error, 101, 1);
}
Покажите какой-нибудь код - ваш код входа. Где ваша база данных SQL? Вы в той же сети? Вы ошиблись в процедуре входа в систему (используя try/catch) и т. д.?