Esempio n. 1
0
        /// <summary>
        /// CSVファイルからTableDataを取得する
        /// </summary>
        /// <param name="filepath">CSVファイルのパス</param>
        /// <param name="tableName">テーブル名</param>
        /// <returns>CSVファイルから取得したTableData</returns>
        public static DataTable SelectCsv(string filepath, string commandText)
        {
            DataTable table = new DataTable();

            if (!File.Exists(filepath))
            {
                return(table);
            }

            // 接続文字列取得
            string connectionString = new Rms.Server.Core.Utility.AppSettings().PrimaryDbConnectionString;

            using (SqlConnection connection = new SqlConnection(connectionString))
                using (SqlCommand command = new SqlCommand(commandText, connection))
                {
                    try
                    {
                        connection.Open();
                        var adapter = new SqlDataAdapter(command);

                        adapter.FillSchema(table, SchemaType.Source);

                        using (var streamReader = new StreamReader(filepath, Encoding.UTF8))
                            using (var csv = new CsvReader(streamReader, CultureInfo.InvariantCulture))
                            {
                                csv.Read();
                                csv.ReadHeader();
                                while (csv.Read())
                                {
                                    var row = table.NewRow();
                                    foreach (DataColumn column in table.Columns)
                                    {
                                        if (csv.GetField(column.ColumnName) == "null")
                                        {
                                            row[column.ColumnName] = DBNull.Value;
                                        }
                                        else
                                        {
                                            row[column.ColumnName] = csv.GetField(column.DataType, column.ColumnName);
                                        }
                                    }
                                    table.Rows.Add(row);
                                }
                            }
                    }
                    finally
                    {
                        connection.Close();
                    }
                }

            return(table);
        }
Esempio n. 2
0
        /// <summary>
        /// 対象DBの全データを削除して、SIDを1から再スタートさせるようにする
        /// </summary>
        public static void DeleteAllReseed()
        {
            // 接続文字列取得
            string connectionString = new Rms.Server.Core.Utility.AppSettings().PrimaryDbConnectionString;

            var sql = File.ReadAllText("resources/DeleteDeliveriesReseed.sql");

            ExecuteSql(sql, connectionString);

            sql = File.ReadAllText("resources/DeleteDevicesReseed.sql");
            ExecuteSql(sql, connectionString);

            sql = File.ReadAllText("resources/DeleteMastersReseed.sql");
            ExecuteSql(sql, connectionString);
        }
Esempio n. 3
0
        /// <summary>
        /// SQLファイルの内容を実行する
        /// </summary>
        /// <param name="sqlFilePath">SQLファイルパス</param>
        /// <returns>実行した/しなかった</returns>
        public static bool ExecSqlFromFilePath(string sqlFilePath)
        {
            if (!File.Exists(sqlFilePath))
            {
                return(false);
            }

            // 接続文字列取得
            string connectionString = new Rms.Server.Core.Utility.AppSettings().PrimaryDbConnectionString;

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                string cmdText = File.ReadAllText(sqlFilePath);
                using (SqlCommand command = new SqlCommand(cmdText, connection))
                {
                    command.ExecuteNonQuery();
                }
            }

            return(true);
        }
Esempio n. 4
0
        /// <summary>
        /// テーブルへのデータ登録を行うSQL文を実行する
        /// </summary>
        /// <param name="tblName">テーブル名(キャメルケースでも可)</param>
        /// <param name="columnValueDic">カラム名(キャメルケースでも可)と値の組み合わせDictionary</param>
        public static void ExecuteInsertSqlCommand(string tblName, Dictionary <string, object> columnValueDic)
        {
            if (tblName == null || columnValueDic == null || columnValueDic.Count == 0)
            {
                return;
            }

            string sqlCommand = "insert into core.";

            // 引数からsqlcommandを作成する
            sqlCommand += ToUpperSnakeCase(tblName) + "(";
            foreach (var key in columnValueDic.Keys)
            {
                // 引数名(カラム名)はアッパースネークケースにして羅列する
                sqlCommand += ToUpperSnakeCase(key) + ",";
            }
            sqlCommand = sqlCommand.Substring(0, sqlCommand.Length - 1) + ") values (";
            foreach (var value in columnValueDic.Values)
            {
                if (value.GetType() == typeof(string) || value.GetType() == typeof(DateTime) || value.GetType() == typeof(bool))
                {
                    // 文字列扱いにして投入する
                    string strValue = "'" + value.ToString() + "'";
                    sqlCommand += strValue + ",";
                }
                else
                {
                    sqlCommand += value + ",";
                }
            }
            sqlCommand = sqlCommand.Substring(0, sqlCommand.Length - 1) + ")";

            // 接続文字列取得
            string connectionString = new Rms.Server.Core.Utility.AppSettings().PrimaryDbConnectionString;

            ExecuteSql(sqlCommand, connectionString);
        }
Esempio n. 5
0
        /// <summary>
        /// 指定したSelect文でデータベースからTableDataを取得する
        /// </summary>
        /// <param name="commandText">Select文</param>
        /// <returns>データベースから取得したTableData</returns>
        public static DataTable SelectTable(string commandText)
        {
            // 接続文字列取得
            string connectionString = new Rms.Server.Core.Utility.AppSettings().PrimaryDbConnectionString;

            using (SqlConnection connection = new SqlConnection(connectionString))
                using (SqlCommand command = new SqlCommand(commandText, connection))
                {
                    try
                    {
                        connection.Open();
                        var adapter = new SqlDataAdapter(command);

                        DataTable table = new DataTable();
                        adapter.Fill(table);

                        return(table);
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
        }