Bonjour tout le monde :
Je suis toujours a la recherche pour mon probléme et je ne trouve pas la solution jusqu'a présent,j'ai poster mon probléme sur notre forum et j'ai parcourus le net maisen faite je m'explique j'ai un fichier .dat que je dois le lire chaque seconde et je dois alimenter ma base avec le contenu de ce fichier en tps réél ! bon jusqu'a présent j'ai eu la chance de resoudre ce probléme grace a ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Data.SqlClient; using System.IO; namespace PFE_2013_V1 { public partial class parser : Form { public parser() { InitializeComponent(); } private void StartImport() { Stopwatch sw = new Stopwatch(); sw.Start(); SqlBulkCopy bulkCopy = new SqlBulkCopy("Data Source=SEDKI-FAMILY\\SEDKIPC;Initial Catalog=BASE_BT;Integrated Security=True;", SqlBulkCopyOptions.TableLock); bulkCopy.DestinationTableName = "dbo.testtable"; bulkCopy.WriteToServer(CreateDataTableFromFile()); sw.Stop(); textBox1.Text = (sw.ElapsedMilliseconds/1000.00).ToString(); } private DataTable CreateDataTableFromFile() { DataTable dt = new DataTable(); DataColumn dc; DataRow dr; dc = new DataColumn(); dc.DataType = System.Type.GetType("System.String"); dc.ColumnName = "c1"; dc.Unique = false; dt.Columns.Add(dc); dc = new DataColumn(); dc.DataType = System.Type.GetType("System.String"); dc.ColumnName = "c2"; dc.Unique = false; dt.Columns.Add(dc); dc = new DataColumn(); dc.DataType = System.Type.GetType("System.String"); dc.ColumnName = "c3"; dc.Unique = false; dt.Columns.Add(dc); dc = new DataColumn(); dc.DataType = System.Type.GetType("System.String"); dc.ColumnName = "c4"; dc.Unique = false; dt.Columns.Add(dc); dc = new DataColumn(); dc.DataType = System.Type.GetType("System.String"); dc.ColumnName = "c5"; dc.Unique = false; dt.Columns.Add(dc); StreamReader sr = new StreamReader(@"E:\EVENT.DAT"); string input; while ((input = sr.ReadLine()) != null) { string[] s = input.Split(new char[] { ' ' }); dr = dt.NewRow(); dr["c2"] = s[0]; dr["c3"] = s[1]; dr["c4"] = s[2]; dr["c5"] = s[3]; dt.Rows.Add(dr); } sr.Close(); return dt; } private void button1_Click(object sender, EventArgs e) { StartImport(); } private void button2_Click(object sender, EventArgs e) { Acceuil retourstart = new Acceuil(); retourstart.Show(); this.Close(); } } }
mais mon point bloquant et que je veux en premier lieu faire le compteur ou le timer qui lit mon fichier EVENT.DAT chaque 1 seconde et en 2éme lieu je veux aprés cette seconde uniquement ajouter la ligne qui vient d'etre ecrite dans le fichier EVENT.DAT et non pas recopié toute l'intégralité du fichier et ainsi allourdir la base et augmenter sa taille avec les anciennes lignes !
j'espére que j'ai pu bien m'expliquer et faire comprendre mon probléme
svp je suis bloqué a ce niveau depuis + qu'un mois et tout mon projet de fin d'étude se base sur cette astuce
Partager