3akram Ответов: 1

C#: создание приложения windows form для базы данных и мастер установки


я создал приложение windows form на c# с использованием базы данных SQL, а также создал установку также с предварительными условиями ".net framework и SQL EXPRESS", и она работает на моем компьютере без каких-либо проблем .. но когда я беру эту копию установки на другой компьютер, приложение не запускается, и когда я открываю диспетчер задач, я нахожу его в фоновом режиме и через несколько секунд исчезаю .. (windows 10, sqlserver 2012, visual studio 2017)

добавление : когда я настраиваю приложение на своем компьютере, оно работает правильно, используя его в том числе базу данных

Что я уже пробовал:

я попытался настроить sql express на другом компьютере и net framework, который я использую на своем компьютере .

1 Ответов

Рейтинг:
5

OriginalGriff

Вы не должны включать SQL Server в свою установку. Есть несколько причин:
0) вы можете распространять SQL Server Express только по соображениям авторского права, а не полную версию SQL Server.
1) возможно, у них уже установлен SQL Server в сети. Если это так, то они, вероятно, захотят использовать эту версию.
2) Если у них установлен SQL server и вы начинаете распространять экземпляры SQL server Express, вы будете раздражать администратора базы данных до чертиков...
3) одна установка сайта SQl Server с гораздо большей вероятностью будет скопирована, чем несколько разрозненных версий под контролем пользователя.
4) Sql server довольно сложен для установки и администрирования "обычным" пользователем - это не очень хорошая идея!
5) это уничтожит основное преимущество использования Sql Server по сравнению с SqlCE или SQLite - многопользовательский доступ. Если каждый установит свою собственную копию SQL server, то у вас будет несколько копий вашей базы данных, каждая из которых используется одним человеком. Это вызовет некоторую путаницу и (в зависимости от того, как вы написали исходную базу данных) может потребовать значительных усилий для объединения в один экземпляр, когда проблема будет реализована.

Если вам нужна однопользовательская система БД, то используйте Access, SqlLite или Sql Compact - don;t распространяйте экземпляры SQL Server в производство!
Если вам нужна многопользовательская система БД, то вам нужно найти соответствующий существующий экземпляр SQL Server на клиентском сайте и загрузить на него свою БД.


3akram

спасибо за ваш совет ... извините, потому что английский-не мой родной язык .. теперь я должен изменить базу данных, которую я использовал в этом приложении, и создать новую, используя access, SqlLite или Sql Compact, но я не должен использовать sql server в своем приложении .. правильно ? ..
во-вторых ... я не понимаю, почему мое приложение не работало ... на другом компьютере ... у которого есть sql express ? это потому, что я использовал в своем приложении sql server и на другом компьютере sql express ?

спасибо снова :)

OriginalGriff

SQL Server спроектирован как многопользовательская БД - и в результате это большая, сложная часть программного обеспечения. Если вам не нужен многопользовательский режим, то вообще не используйте серверную БД - используйте однопользовательскую БД, которая меньше, проще, занимает меньше ресурсов на клиентском компьютере и не требует сложной установки. Все, что им нужно, - это пара DLL-сборок, поставляемых вместе с вашим приложением.

Вообще говоря, производственный SQL Server настроен иначе, чем Express edition - последний предназначен для разработки, а не для производства, и поэтому вы обычно получаете доступ к нему через авторизацию Windows. Производственные базы данных нуждаются в лучшей защите, поэтому вам нужна учетная запись пользователя для подключения, которая должна иметь соответствующие разрешения для конкретной БД, к которой вы обращаетесь, и вам, вероятно, нужен доступ администратора для создания или изменения БД.

3akram

спасибо, теперь я использую SQLite , я отброшу всю базу данных и создам ее снова с помощью SQLite

OriginalGriff

Всегда пожалуйста!

3akram

Я создал свою базу данных с помощью sqlite .. и все та же проблема, но теперь я знаю, почему 😂 .. в sqliteconnection просто отправьте строку, которая несет путь к базе данных в моем локальном .. когда я копирую программу, она не запускается, потому что соединение не открыто ни на одном локальном компьютере .. потому что в приложении нет подключения к пути

OriginalGriff

Не хотите ли попробовать еще раз, но на этот раз по-английски? :смеяться:

Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы. И сейчас раннее утро, так что я не понимаю ни слова из этого! :)

3akram

😂😂
Простите, в следующий раз я попробую говорить по-английски.
Sqliteconnection con = @" ... Путь к моей базе данных находится здесь ... "

Это проблема, на другом компьютере .. этот путь не существует .
Вам не нужно отвечать , я просто хочу , чтобы вы знали, что проблема не в sql server .. проблема в том, что путь

OriginalGriff

Поэтому не кодируйте его жестко - храните в конфигурационном файле или подобном файле.