internal void RestoreTableTsv(string TableName, bool EraseBefore) { List <string> fieldNames; List <string> fieldTypes = new List <string>(); //string[,] dati = FileDiTesto.FileInMatrice(Commons.PathDatabase + // "\\" + TableName + ".tsv", '\t', // out fieldsNames, out fieldTypes); string dati = TextFile.FileToString(Commons.PathDatabase + "\\" + TableName + ".tsv"); if (dati is null) { return; } using (DbConnection conn = Connect()) { DbCommand cmd = conn.CreateCommand(); if (EraseBefore) { // first: erases existing rows in the table cmd.CommandText += "DELETE FROM " + TableName + ";"; cmd.ExecuteNonQuery(); } else { throw new Exception("Append of table records to an existing table id not implemented yet"); //return; } string fieldsString = " ("; string valuesString; int fieldsCount = 0; int index = 0; string fieldName = ""; while (index < dati.Length) { // parse first line: field names fieldNames = new List <string>(); do { if (dati[index++] != '\"') { return; // error! } fieldName = ""; while (dati[index] != '\"') { fieldName += dati[index++]; } fieldNames.Add(fieldName); fieldsString += fieldName + ","; fieldsCount++; if (dati[++index] != '\t' && dati[index] != '\r') { return; // ERROR! } } while (dati[++index] != '\r'); index++; // void line feed // parse second line: field types string fieldType = ""; while (dati[index] != '\r') { while (dati[index] != '\"') { fieldType += dati[index++]; } fieldTypes.Add(fieldType); fieldsString += fieldName + ","; fieldsCount++; } index++; // void line feed // parse the rest of the rows: values string fieldValue = ""; while (dati[index] != '\r') { while (dati[index] != '\"') { fieldType += dati[index++]; } fieldTypes.Add(fieldType); fieldsString += fieldName + ","; fieldsCount++; } } //for (int col = 0; col < dati.GetLength(1); col++) //{ // if (fieldNames[col] != "") // { // fieldsString += fieldNames[col] + ","; // fieldsCount++; // } //} //fieldsString = fieldsString.Substring(0, fieldsString.Length - 1); //fieldsString += ")"; //for (int row = 0; row < dati.GetLength(0); row++) //{ // valuesString = " Values ("; // for (int col = 0; col < fieldsCount; col++) // { // if (fieldNames[col] != "") // { // if (fieldTypes[col].IndexOf("VARCHAR") >= 0) // valuesString += "" + SqlString(dati[row, col]) + ","; // else if (fieldTypes[col].IndexOf("INT") >= 0) // valuesString += SqlInt(dati[row, col]) + ","; // else if (fieldTypes[col].IndexOf("REAL") >= 0) // valuesString += SqlFloat(dati[row, col]) + ","; // else if (fieldTypes[col].IndexOf("FLOAT") >= 0) // valuesString += SqlFloat(dati[row, col]) + ","; // else if (fieldTypes[col].IndexOf("DATE") >= 0) // valuesString += SqlDate(dati[row, col]) + ","; // } // } // valuesString = valuesString.Substring(0, valuesString.Length - 1); // valuesString += ")"; // cmd.CommandText = "INSERT INTO " + TableName + // fieldsString + // valuesString; // //" WHERE " + fieldsNames[0] + "="; // //if (fieldTypes[0].IndexOf("VARCHAR") >= 0) // // cmd.CommandText += "'" + StringSql(dati[row, 0]) + "'"; // //else // // cmd.CommandText += StringSql(dati[row, 0]); // cmd.CommandText += ";"; // cmd.ExecuteNonQuery(); //} //cmd.Dispose(); } }