/// <summary>指定テーブルのレコードを取得</summary> /// <returns>テーブルレコード</returns> public DataTable GetTableRecord(DataBaseInfo tableInfo) { // データベース選択時はnullを戻す if (string.IsNullOrEmpty(tableInfo.ParentName)) { return(null); } try { // SQL Server認証でDB接続 using (var sqlServer = new SqlServer(Settings.Default.ServerName, Settings.Default.DbName, Settings.Default.UserName, Settings.Default.Password)) { // 接続エラー確認 if (sqlServer.IsError) { throw new Exception(sqlServer.ExceptionMessage); } // クエリを保存するStringBuilderの宣言 using (var query = new DisposableStringBuilder()) { // データベース名+テーブル名の取得 var tableName = tableInfo.ParentName + ".dbo." + tableInfo.Name; // レコード取得クエリ作成 query.Append("SELECT * FROM "); query.Append(tableName); // クエリを実行してDataTableを取得 return(sqlServer.ExecuteQueryToDataTable(query.ToString())); } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } return(null); }
/// <summary>住所一覧をCSVファイルに保存</summary> /// <param name="fullPath">保存するCSVファイルパス</param> /// <param name="addresses">住所一覧</param> public void SaveCsvFile(string fullPath, ObservableCollection <Address> addresses) { // 指定パスのファイルを上書保存 using (var writer = new StreamWriter(fullPath, false, Encoding.Default)) { using (var row = new DisposableStringBuilder(128)) { foreach (var address in addresses) { // 出力する行データの作成 row.Clear(); row.Append(AddDoubleQuotation(address.PostalCode)).Append(","); row.Append(AddDoubleQuotation(address.Prefectures)).Append(","); row.Append(AddDoubleQuotation(address.City)).Append(","); row.Append(AddDoubleQuotation(address.Place)); // 行データをCSVファイルに出力 writer.WriteLine(row.ToString()); } } } }
/// <summary>データベース情報一覧の取得</summary> /// <returns>データベース情報一覧</returns> public ObservableCollection <DataBaseInfo> GetDataBaseInfo() { try { // 戻り値の宣言 var values = new ObservableCollection <DataBaseInfo>(); // Windows認証でDB接続 using (var sqlServer = new SqlServer(Settings.Default.ServerName, Settings.Default.DbName)) { // 接続エラー確認 if (sqlServer.IsError) { throw new Exception(sqlServer.ExceptionMessage); } // クエリを保存するStringBuilderの宣言 using (var query = new DisposableStringBuilder()) { // データベース一覧取得クエリの作成 query.Append(@"SELECT name FROM sys.databases ORDER BY database_id"); // クエリを実行してSystem.Data.SqlClient.SqlDataReaderで取得 using (var dataReader = sqlServer.ExecuteQuery(query.ToString())) { // 実行エラー確認 if (sqlServer.IsError) { throw new Exception(sqlServer.ExceptionMessage); } // データ呼び出し while (dataReader.Read()) { values.Add(new DataBaseInfo() { Name = dataReader.GetString(0) }); } } // パラメータの宣言 var parameter = new Dictionary <string, object>(); // データベース毎にテーブル一覧を取得 for (var i = 0; i < values.Count; i++) { // テーブル一覧を取得するクエリの作成 // ユーザテーブルのみを対象とする query.Clear(); query.Append(@"USE "); query.Append(values[i].Name); query.Append(@" SELECT name FROM sys.objects WHERE type = @Type"); // パラメータの作成 parameter.Clear(); parameter.Add(@"@Type", "U"); // クエリを実行してSystem.Data.SqlClient.SqlDataReaderで取得 using (var dataReader = sqlServer.ExecuteQuery(query.ToString(), parameter)) { // 実行エラー確認 if (sqlServer.IsError) { throw new Exception(sqlServer.ExceptionMessage); } // データ呼び出し while (dataReader.Read()) { values[i].Tables.Add(new DataBaseInfo() { Name = dataReader.GetString(0), ParentName = values[i].Name }); } } } } } return(values); } catch (Exception ex) { Debug.WriteLine(ex.Message); } return(null); }