public NpgQuery GetInsertScriptItem(TableData tableData) { if (tableData.Data.Length == 0) return null; var parameters = new NpgsqlParameter[tableData.Columns.Length*tableData.Data.Length]; var insertDataScript = new string[tableData.Data.Length]; var parametersIndex = 0; for (var i = 0; i < tableData.Data.Length; i++) { var i1 = i; insertDataScript[i] = string.Format( "({0})", string.Join(", ", tableData.Columns.Select(c => string.Format(":{0}", c + i1)))); var data = tableData.Data[i]; for (var j = 0; j < tableData.Columns.Length; j++) { var column = tableData.Columns[j]; var value = data[j]; parameters[parametersIndex++] = new NpgsqlParameter(column + i1, value); } } var scriptRow = string.Format( "INSERT INTO {0} ({1}) VALUES {2}", string.Format("\"{0}\"", tableData.TableName), string.Join(", ", tableData.Columns.Select(c => string.Format("\"{0}\"", c))), string.Join(", ", insertDataScript)); return new NpgQuery(scriptRow, parameters); }
public void Update(TableData tableData) { Dictionary<string, SerialHelperItem> items; if (!Items.TryGetValue(tableData.TableName, out items)) return; for (var i = 0; i < tableData.Columns.Length; i++) { SerialHelperItem item; if (!items.TryGetValue(tableData.Columns[i], out item)) continue; foreach (var data in tableData.Data) { var dataValue = data[i]; long value; var longVal = dataValue as long?; if (longVal.HasValue) { value = longVal.Value; } else { value = (int) dataValue; } if (value > item.MaxValue) item.MaxValue = value; } } }
public void GetInsertScriptItemEmptyTest() { var tableData = new TableData { TableName = "Table", Columns = new[] { "id", "name", "data" }, Data = new object[0][] }; var result = _helper.GetInsertScriptItem(tableData); Assert.IsNull(result); }
public void GetInsertScriptItemTest() { var tableData = new TableData { TableName = "Table", Columns = new[] {"id", "name", "data"}, Data = new[] { new object[] {1, "name1", "data1"} } }; var result = _helper.GetInsertScriptItem(tableData); Assert.AreEqual( "INSERT INTO \"Table\" (\"id\", \"name\", \"data\") VALUES (:id0, :name0, :data0)", result.Text); Assert.AreEqual(3, result.Parameters.Length); Assert.AreEqual("id0", result.Parameters[0].ParameterName); Assert.AreEqual(1, result.Parameters[0].Value); Assert.AreEqual("name0", result.Parameters[1].ParameterName); Assert.AreEqual("name1", result.Parameters[1].Value); Assert.AreEqual("data0", result.Parameters[2].ParameterName); Assert.AreEqual("data1", result.Parameters[2].Value); }
public void UpdateTest() { var tableData = new TableData { Columns = new[] {"id", "serial", "papa"}, TableName = "Table", Data = new[] { new object[] {1, 10, "papa"}, new object[] {2, 20, "papa"}, new object[] {2, 15, "papa"} } }; _helper.Update(tableData); Assert.AreEqual(20, _helper.Items["Table"]["serial"].MaxValue); }