2017-03-15 5 views
0

ファイル名(.mdf)とSQLサーバー上の既存のデータベースを比較する必要がありますが、わかりません。添付されていないデータベースは、datagridviewに表示する必要があります。ここでファイル名とサーバー上の既存の(接続された)データベースとの比較

コードは、これまでのところです:

private void loadDB_Click_1(object sender, EventArgs e) 
{ 
    String[] files = Directory.GetFiles(@"C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\", "*.mdf", SearchOption.AllDirectories); 

    DataTable table = new DataTable(); 
    table.Columns.Add("File Name"); 
    table.Columns.Add("Path"); 

    for (int i = 0; i < files.Length; i++) 
    { 
     FileInfo file = new FileInfo(files[i]); 
     table.Rows.Add((Path.GetFileNameWithoutExtension(file.Name)),Path.GetFullPath(file.Name)); 
    }  

    dataGridView2.DataSource = table; 
} 
+0

たぶんSqlCommadでこれを使用しよう:http://stackoverflow.com/をa/147662/5358389を入力し、結果をファイル名に反映させます。 – daniell89

答えて

0
DataTable dbTables = new DataTable(); 
SqlDataAdapter adap; 
SqlConnection connection = new SqlConnection("yourConnectionString");    
SqlCommand cmd = new SqlCommand(@"SELECT name FROM master.dbo.sysdatabases ", connection);   

    adap = new SqlDataAdapter(cmd); 
    adap.Fill(dbTables); 

    string[] dbTableNames = dbTables.AsEnumerable().Select(x => x.Field<string>("name")).ToArray(); 

    string[] diff = files.Except(dbTableNames).ToArray(); // one of pssibility to check differents 

あなたがこれを行うのDataGridView移入するために:

dataGridView1.Columns.Add("FileName", "File Name"); 
for (int i = 0; i < diff.Length; i++) 
{ 
    dataGridView1.Rows.Add(new object[] { diff[i] }); 
} 
+0

また、filePathを取得するためにdbからfilenameを選択することもできます。SELECT name、filename FROM master.dbo.sysdatabases – daniell89

関連する問題