Beispiel #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="InsertWriter" /> class. The databaseTable must have dataTypes (call DataReader.DataTypes()). Use this with <see cref="InsertWriter.WriteInsert(IDataRecord)"/>
        /// </summary>
        /// <param name="databaseTable">The database table.</param>
        /// <param name="sqlType">Type of the SQL.</param>
        /// <exception cref="System.ArgumentNullException">databaseTable</exception>
        public InsertWriter(DatabaseTable databaseTable, SqlType sqlType)
        {
            if (databaseTable == null)
                throw new ArgumentNullException("databaseTable");

            _databaseTable = databaseTable;

            PrepareTypes();
            _sqlType = sqlType;
            _sqlWriter = new SqlWriter(_databaseTable, sqlType);
            _converter = new Converter(sqlType, _dateTypes);

            PrepareTemplate();
        }
        public void TestStringWithSingleQuotes()
        {
            //arrange
            const string s = "Hello 'Boys'";
            const SqlType sqlType = SqlType.Db2;
            var dateTypes = new Dictionary<string, string>();

            var converter = new Converter(sqlType, dateTypes);

            //act
            var result = converter.Convert(typeof(string), s, "Name");

            //assert
            Assert.AreEqual("'Hello ''Boys'''", result);
        }
        public void TestDbNull()
        {
            //arrange
            var dbNull = DBNull.Value;
            const SqlType sqlType = SqlType.Db2;
            var dateTypes = new Dictionary<string, string>();

            var converter = new Converter(sqlType, dateTypes);

            //act
            var result = converter.Convert(typeof(string), dbNull, "Name");

            //assert
            Assert.AreEqual("NULL", result);
        }
        public void TestDate()
        {
            //arrange
            var dt = new DateTime(2001, 3, 30, 10, 45, 30, 839);
            const SqlType sqlType = SqlType.Db2;
            var dateTypes = new Dictionary<string, string>();
            dateTypes.Add("StartDate", "TIMESTAMP");

            var converter = new Converter(sqlType, dateTypes);

            //act
            var result = converter.Convert(typeof(DateTime), dt, "StartDate");

            //assert
            Assert.AreEqual("'2001-03-30 10:45:30.839'", result);
        }
        public void TestStringUnicodeSqlServer()
        {
            //arrange
            const string s = "Hello";
            const SqlType sqlType = SqlType.SqlServer;
            var dateTypes = new Dictionary<string, string>();

            var converter = new Converter(sqlType, dateTypes);

            //act
            var result = converter.Convert(typeof(string), s, "Name");

            //assert
            Assert.AreEqual("N'Hello'", result);
        }
        public void TestStringTimeSpan()
        {
            //arrange
            var ts = new TimeSpan(1, 2, 3);
            const SqlType sqlType = SqlType.SqlServer;
            var dateTypes = new Dictionary<string, string>();

            var converter = new Converter(sqlType, dateTypes);

            //act
            var result = converter.Convert(typeof(TimeSpan), ts, "Name");

            //assert
            Assert.AreEqual("'01:02:03'", result);
        }
        public void TestStringDecimal()
        {
            //arrange
            const decimal i = 10.5M;
            const SqlType sqlType = SqlType.SqlServer;
            var dateTypes = new Dictionary<string, string>();

            var converter = new Converter(sqlType, dateTypes);

            //act
            var result = converter.Convert(typeof(decimal), i, "Name");

            //assert
            Assert.AreEqual("10.5", result);
        }
        public void TestStringInteger()
        {
            //arrange
            const int i = 10;
            const SqlType sqlType = SqlType.SqlServer;
            var dateTypes = new Dictionary<string, string>();

            var converter = new Converter(sqlType, dateTypes);

            //act
            var result = converter.Convert(typeof(int), i, "Name");

            //assert
            Assert.AreEqual("10", result);
        }
Beispiel #9
0
        /// <summary>
        /// Writes the INSERTs in the specified SQL dialect
        /// </summary>
        /// <param name="sqlType">Type of the SQL.</param>
        /// <returns></returns>
        public string Write(SqlType sqlType)
        {
            if (_dataTable == null) return null; //wrong constructor used

            _sqlType = sqlType;
            _sqlWriter = new SqlWriter(_databaseTable, sqlType);
            _converter = new Converter(sqlType, _dateTypes);

            PrepareTemplate();

            var sb = new StringBuilder();

            PrepareIdentityInsert(sb);

            foreach (DataRow row in _dataTable.Rows)
            {
                sb.AppendLine(WriteInsert(row));
            }

            ResetIdentity(sb);

            return sb.ToString();
        }
        /// <summary>
        /// Writes the INSERTs in the specified SQL dialect
        /// </summary>
        /// <param name="sqlType">Type of the SQL.</param>
        /// <returns></returns>
        public string Write(SqlType sqlType)
        {
            _sqlType = sqlType;
            _sqlWriter = new SqlWriter(_databaseTable, sqlType);
            _converter = new Converter(sqlType, _dateTypes);

            PrepareTemplates();

            var sb = new StringBuilder();

            PrepareIdentityInsert(sb);

            var changes = _dataTable.GetChanges(DataRowState.Added);
            if (changes != null)
                foreach (DataRow row in changes.Rows)
                    sb.AppendLine(WriteInsert(row));

            ResetIdentity(sb);

            changes = _dataTable.GetChanges(DataRowState.Modified);
            if (changes != null)
                foreach (DataRow row in changes.Rows)
                    sb.AppendLine(WriteUpdate(row));

            changes = _dataTable.GetChanges(DataRowState.Deleted);
            if (changes != null)
                foreach (DataRow row in changes.Rows)
                    sb.AppendLine(WriteDelete(row));

            return sb.ToString();
        }