Какие компоненты требуется для запуска моей программы на C # с базой данных? - PullRequest
0 голосов
/ 13 августа 2011

Я создал программу на C # с базой данных SQL Server в Visual Studio 2010 и создал программу установки для этого.

На моем компьютере, когда я устанавливаю программу, она запускается без проблем. Тем не менее, когда я устанавливаю его на другой компьютер, программа устанавливается успешно, но база данных программы не может работать, и у программы возникают проблемы с базой данных. Для этого я установил .NET Framework 4, но проблемы не исчезли.

Какой компонент (например, .NET Framework 4) необходимо установить на другом компьютере для запуска моей программы?

class db
{

    public string UserName="";
    public string Password="";

    private SqlConnection con;
    private SqlCommand cmd;
    private SqlDataAdapter da;

    public db()
    {
        con = new SqlConnection();
        cmd = new SqlCommand();
        da = new SqlDataAdapter();
        cmd.Connection = con;
        da.SelectCommand = cmd;
    }
    public void Connect()
    {
        string cs = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\my.mdf;Integrated Security=True;User Instance=True";


        con.ConnectionString = cs;
        con.Open();
    }

    public void Disconnect()
    {
        con.Close();
    }
    //Select Command
    public DataTable Select(string sql)
    {
        DataTable dt = new DataTable();
        cmd.CommandText = sql;
        da.Fill(dt);
        return dt;
    }

    //Insert , Update , Delete
    public void Docommand(string sql)
    {
        cmd.CommandText = sql;
        cmd.ExecuteNonQuery();
    }
}

Ответы [ 3 ]

4 голосов
/ 13 августа 2011

Короткий ответ: вашей программе нужны именно те компоненты, которые вы используете в своем исходном коде.

.NET Framework 4 доступен на большинстве современных компьютеров Windows, поэтому, скорее всего, это не так.проблема (но вы все равно можете убедиться, что на ваших целевых машинах есть .NET 4, а не только .NET 3.5.)

Более важно подумать о компонентах, которые по умолчанию не установлены нацелевая машина.Это включает, например, SQL Server 2008. SQL Server, хотя и от Microsoft, является автономным продуктом и , а не частью .NET Framework.Даже если вы установили .NET 4, это не решило бы проблемы с базой данных.

К сожалению, вы еще не сказали, есть ли у вас база данных SQL Server или SQL Server Compact Edition (последняя из которых толькофайл, который может быть развернут с вашей программой, в то время как первый запущен как системная служба на каком-либо сервере.)

В любом случае убедитесь, что каждый целевой компьютер может получить доступ к этой базе данных.Это означает:

  • Если это локальная база данных SQL Server (на том же компьютере, на котором выполняется приложение), SQL Server необходимо установить на каждом целевом компьютере.(Мы говорим здесь не о SQL Server CE, а о полномасштабном серверном продукте!)

  • Если это база данных на общедоступном сетевом сервере, убедитесь, что вы 'у нас есть правильная строка подключения, и права доступа установлены правильно.

Обновление:

Давайте посмотрим на строку подключения:

string cs = "Data Source=.\\SQLEXPRESS;AttachDbFilename=…\\my.mdf;…";

Исходя из этого, получается, что ...

  • Вы установили SQL Server 2008 Express на свой компьютер иВы создали базу данных, которая хранится в файле my.mdf, который находится в двоичной папке вашей программы (например, bin/Release).

  • Вы настроили свою программу так, чтобы онаподключается к базе данных путем прямого доступа к файлу базы данных my.mdf.

Теперь, когда вы передаете свою программу кому-то другому, ваша программа будет действовать точно так же, как и на вашем компьютере.: Он попытается открыть базу данных из файла базы данных my.mdf в вашей программеБинарная папка am.

Этот процесс не будет выполнен на целевом компьютере, если не будет выполнено одно из следующих условий:

  • SQL Server 2008 Express не установлен.Даже если вы обращаетесь к базе данных напрямую, SQL Server 2008 Express все еще требуется для доступа к базе данных.

  • my.mdf не копируется в выходную папку вашей программы.Вы можете легко проверить, открыв решение вашей программы, затем переключитесь на Solution Explorer и посмотрите на Свойства из my.mdf. Копировать в выходную папку , установленную в Всегда или Копировать, если новее ?

Не зная точного назначения вашей программы,Я бы посоветовал вам взглянуть на SQL Server Compact Edition.В отличие от SQL Server Express, целевому пользователю не нужно его устанавливать;SQL Server Compact Edition развертывается на целевом компьютере либо в составе .NET Framework, либо (если нет) в качестве дополнительной сборки в двоичной папке вашей программы.Вместо файла .mdf ваша база данных будет находиться в файле .sdf, и некоторые функции базы данных будут отсутствовать (возможно, такие сложные вещи, как репликация и т. Д., Которые, как правило, не нужны для простой программы).

1 голос
/ 13 августа 2011

Дальнейшие улучшения должны быть установлены, по крайней мере, если вы используете SQL Server Express для базы данных SQL Server и проверяете путь и все, что касается строки подключения, если вы используете sql compact, вы не можете установить его, вам просто нужно ссылаться на эту DLL в вашем проекте

http://msdn.microsoft.com/en-us/library/aa983326.aspx

http://support.microsoft.com/kb/319291/it

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...