我的C#程序与数据库需要运行哪些组件?

时间:2011-08-13 08:48:10

标签: c# database visual-studio-2010 sql-server-2008 install

我创建了一个C#程序,它在Visual Studio 2010中有一个SQL Server数据库,我为此创建了一个安装程序。

在我的计算机上,当我安装程序时,它运行没有任何问题。但是,当我在另一台计算机上安装它时,程序安装成功,但程序的数据库无法运行,程序有一些数据库问题。我为此安装了.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 个答案:

答案 0 :(得分:4)

简短的回答是,您的程序正好需要您在源代码中使用的那些组件。

.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数据库文件中打开数据库。

如果不满足以下任何条件,此过程将在目标计算机上失败:

  • 未安装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 :(得分:1)

要安装进一步的改进,至少如果您使用SQL Server Express到SQL Server数据库并验证路径和所有与连接字符串有关的内容,如果您使用的是sql compact,则无法安装它,您只需要在你的项目中引用这个dll

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

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

问候。

答案 2 :(得分:1)