Diskuze: TXT súbor do mysql
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Pro separaci sloupců použij Split:
string[] delim = new string[] { " " }; //jako oddělovač použij dvě mezery
string[] sloupce = str.Split(delim, StringSplitOptions.None); //pak odřízni okrajové mezery pomocí .Trim
Soubor můžeš načíst třeba takto:
private void LoadItems(string filename)
{
List<string> lst = new List<string>();
try
{
using (StreamReader r = new StreamReader(filename, Encoding.Default, true))
{
string line;
while ((line = r.ReadLine()) != null)
{
lst.Add(line);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// tady pak zpracovat jednotlivé řadky (lst), jak jsem uvedl výš
//potom ty položky naházet do databáze už musíš podle toho, kam co chceš
}
ps, zdroják jsem netestoval... doufám, že je funkční
zatiaľ som to skúšal takto:
var lines = System.IO.File.ReadAllLines(@"D:\test.txt");
var data = new List<List<string>>();
foreach (var line in lines)
{
var split = line.Split(new[]{' ', '\t'}, StringSplitOptions.RemoveEmptyEntries);
data.Add(split.ToList());
}
ale neviem ako si viem z listu vybrať hodnoty po slĺpcoch ... v podstate v
txt mám 3 riadky a 3 stĺpce a potrebujem ich narvať do databázy tak isto ako
v sú v txt
viem to urobiť cez string?
string[][] table = data.Select(a => a.ToArray()).ToArray();
prípadne ak použijem Linq (podľa msdn) tak:
var prvy_stlpec = data.Select(line => line.First())
var druhy_stlpec = data.Select(line => line[1]);
var treti_stlpec = data.Select(line => line[2]);
ale aj tak mi nie je jasné ako si viem vybrať určitý stĺpec
Ale asi naj voľba to bude cez 2D pole takže:
string[][] table = data.Select(a => a.ToArray()).ToArray();
moc nechápu, s čím si nedokážeš poradit
var lines = System.IO.File.ReadAllLines(@"D:\test.txt");
var data = new List<List<string>>();
foreach (var line in lines)
{
var split = line.Split(new[]{' ', '\t'}, StringSplitOptions.RemoveEmptyEntries);
data.AddRange(split);//teď máš v data sloupce jednoho z řádků
//tady proveď import do DB
ImportujDoDbJakoNeco(data[0]);
ImportujDoDbJakoNecoJineho(data[1]);
ImportujDoDbJakoNecoUplneJineho(data[2]);
data.Clear(); // tady vymažeš list, abys ho mohl znovu naplnit
}
tak mám to niejako takto:
string a;
string b;
string c;
private void button1_Click(object sender, EventArgs e)
{
var lines = System.IO.File.ReadAllLines(@"D:\test.txt");
var data = new List<string>();
foreach (var line in lines)
{
var split = line.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
data.AddRange(split);
a = data[0].ToString();
b = data[1].ToString();
c = data[2].ToString();
data.Clear();
}
string constring = "Server=***;Database=OitDB;Uid=martin;Pwd=***;";
string Query = "INSERT INTO OitDB.plp(a,b,c)VALUES(@a,@b,@c)";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmdDatabase = new MySqlCommand(Query, conDatabase);
cmdDatabase.Parameters.AddWithValue("@a", a);
cmdDatabase.Parameters.AddWithValue("@b", b);
cmdDatabase.Parameters.AddWithValue("@c", c);
MySqlDataReader myReader;
try
{
conDatabase.Open();
myReader = cmdDatabase.ExecuteReader();
MessageBox.Show("zapisane");
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
urobil som si skušobný súbor test.txt
ale teraz mi zapisuje len posledný riadok, takže v tomto prípade a b c
Podľa tvojho postupu si zapíšem "hodnoty" do data a potom vykonám
data.Clear(), takže musím použiť dajaký repeater?
Musíš to ukládání dát do toho cyklu procházení, protože takto si vždycky projdeš řádky, ale uložení dáš až na poslední řádek
string a;
string b;
string c;
private void button1_Click(object sender, EventArgs e)
{
var lines = System.IO.File.ReadAllLines(@"D:\test.txt");
var data = new List<string>();
foreach (var line in lines)
{
var split = line.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
data.AddRange(split);
a = data[0].ToString();
b = data[1].ToString();
c = data[2].ToString();
data.Clear();
string constring = "Server=***;Database=OitDB;Uid=martin;Pwd=***;";
string Query = "INSERT INTO OitDB.plp(a,b,c)VALUES(@a,@b,@c)";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmdDatabase = new MySqlCommand(Query, conDatabase);
cmdDatabase.Parameters.AddWithValue("@a", a);
cmdDatabase.Parameters.AddWithValue("@b", b);
cmdDatabase.Parameters.AddWithValue("@c", c);
MySqlDataReader myReader;
try
{
conDatabase.Open();
myReader = cmdDatabase.ExecuteReader();
MessageBox.Show("zapisane");
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
no jasné .. som to prehliadol
mám ešte problém, pretože mám aj slová s medzerou, takže mi ich rozdeľuje do ďalšieho stĺpca
Zobrazeno 13 zpráv z 13.