/// <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); }
/// <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(); }