Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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());
                    }
                }
            }
        }
Beispiel #3
0
        /// <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);
        }