在任何Windows上轻松使用SQL Server mdf文件,无需任何身份验证

时间:2017-07-29 08:53:59

标签: sql-server database c#-2.0

我有一个SQL Server .MDF数据库文件,其中包含我需要加载到项目中的数据和表,并添加或更新该数据,以便在我附加文件并在第二台PC上运行我的程序时SQL Server已经安装,我收到错误,找不到数据库!

注意:数据库是在SQL Server 2012本地主机服务器和Windows身份验证模式下创建的。

我正在使用此代码加载和使用数据库:

SqlConnection c = new SqlConnection(@"Data Source=.;Initial Catalog=db1;Integrated Security=True");

private void Form1_Load(object sender, EventArgs e)
{
    String str;
    SqlConnection myConn = new SqlConnection(@"Data Source=.;Initial Catalog=db1;Integrated Security=True");

    str = "CREATE DATABASE db1";
    SqlCommand myCommand = new SqlCommand(str, myConn);

    try
    {
        myConn.Open();
        myCommand.ExecuteNonQuery();
        MessageBox.Show("First db is Created", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch (System.Exception ex)
    {
        // MessageBox.Show("DB is exist");
    }
    finally
    {
        if (myConn.State == ConnectionState.Open)
        {
            myConn.Close();
        }
    }

    using (SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=db1;Integrated Security=True"))
    {
        try
        {
            //Open.the SqlConnection;
            con.Open();

            //The following code uses a SqlCommand based on the SqlConnection
            using (SqlCommand command = new SqlCommand("CREATE TABLE contents(id int IDENTITY(100, 1),Name char(50) NOT NULL,Lastname char(50) NOT NULL,Number char(50) ,Area nvarchar(50) ,Date nvarchar(50)NULL,Duration nvarchar(MAX),description nvarchar(MAX),gender nvarchar(50),number2 nvarchar(50),DT datetime NULL);", con))
                    command.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            //MessageBox.Show("Tables created");
        }
    }
}

加载表

private void button4_Click(object sender, EventArgs e)
{
    SqlDataAdapter a = new SqlDataAdapter("select * from contents", c);
    DataTable t = new DataTable();
    a.Fill(t);

    dataGridView1.DataSource = t;
    dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.RowCount - 1;
    dataGridView1.AutoResizeColumns();
}

但它不是非常独特和有用的数据库将每天移动到另一台PC并且它必须完美加载我也有一些SQL文件中的表是静态的,他们不需要为它们编码,我想只是用它们作为资源。我还听说过一些方法,嵌入式或本地数据库可以在app数据文件夹中用作db,并且可以明智地使用app移动,所以我需要一些帮助。感谢

1 个答案:

答案 0 :(得分:1)

而不是每次都创建一个原始数据库,你可以使用你的mdf文件作为源代码,如下面的

Create database dbname 
On 
(   
Filename= 'path where you copied mdf file' 

)
For attach;