· 7 years ago · Sep 16, 2018, 05:10 AM
1using System;
2using System.Data;
3using System.Data.SQLite;
4using System.Linq;
5using System.Text;
6
7namespace ConsoleTest
8{
9 class Program
10 {
11 #region RACE テーブル作æˆç”¨ SQL
12 const string sqlTableCreate_RACE =
13 "CREATE TABLE IF NOT EXISTS RACE (" +
14 "RecordSpec CHAR(2)," +
15 "DataKubun CHAR(1)," +
16 "MakeDate CHAR(8)," +
17 "Year CHAR(4)," +
18 "MonthDay CHAR(4)," +
19 "JyoCD CHAR(2)," +
20 "Kaiji CHAR(2)," +
21 "Nichiji CHAR(2)," +
22 "RaceNum CHAR(2)," +
23 "YoubiCD CHAR(1)," +
24 "TokuNum CHAR(4)," +
25 "Hondai CHAR(60)," +
26 "Fukudai CHAR(60)," +
27 "Kakko CHAR(60)," +
28 "HondaiEng CHAR(120)," +
29 "FukudaiEng CHAR(120)," +
30 "KakkoEng CHAR(120)," +
31 "Ryakusyo10 CHAR(20)," +
32 "Ryakusyo6 CHAR(12)," +
33 "Ryakusyo3 CHAR(6)," +
34 "Kubun CHAR(1)," +
35 "Nkai CHAR(3)," +
36 "GradeCD CHAR(1)," +
37 "GradeCDBefore CHAR(1)," +
38 "SyubetuCD CHAR(2)," +
39 "KigoCD CHAR(3)," +
40 "JyuryoCD CHAR(1)," +
41 "JyokenCD1 CHAR(3)," +
42 "JyokenCD2 CHAR(3)," +
43 "JyokenCD3 CHAR(3)," +
44 "JyokenCD4 CHAR(3)," +
45 "JyokenCD5 CHAR(3)," +
46 "JyokenName CHAR(60)," +
47 "Kyori CHAR(4)," +
48 "KyoriBefore CHAR(4)," +
49 "TrackCD CHAR(2)," +
50 "TrackCDBefore CHAR(2)," +
51 "CourseKubunCD CHAR(2)," +
52 "CourseKubunCDBefore CHAR(2)," +
53 "Honsyokin1 CHAR(8)," +
54 "Honsyokin2 CHAR(8)," +
55 "Honsyokin3 CHAR(8)," +
56 "Honsyokin4 CHAR(8)," +
57 "Honsyokin5 CHAR(8)," +
58 "Honsyokin6 CHAR(8)," +
59 "Honsyokin7 CHAR(8)," +
60 "HonsyokinBefore1 CHAR(8)," +
61 "HonsyokinBefore2 CHAR(8)," +
62 "HonsyokinBefore3 CHAR(8)," +
63 "HonsyokinBefore4 CHAR(8)," +
64 "HonsyokinBefore5 CHAR(8)," +
65 "Fukasyokin1 CHAR(8)," +
66 "Fukasyokin2 CHAR(8)," +
67 "Fukasyokin3 CHAR(8)," +
68 "Fukasyokin4 CHAR(8)," +
69 "Fukasyokin5 CHAR(8)," +
70 "FukasyokinBefore1 CHAR(8)," +
71 "FukasyokinBefore2 CHAR(8)," +
72 "FukasyokinBefore3 CHAR(8)," +
73 "HassoTime CHAR(4)," +
74 "HassoTimeBefore CHAR(4)," +
75 "TorokuTosu CHAR(2)," +
76 "SyussoTosu CHAR(2)," +
77 "NyusenTosu CHAR(2)," +
78 "TenkoCD CHAR(1)," +
79 "SibaBabaCD CHAR(1)," +
80 "DirtBabaCD CHAR(1)," +
81 "LapTime1 CHAR(3)," +
82 "LapTime2 CHAR(3)," +
83 "LapTime3 CHAR(3)," +
84 "LapTime4 CHAR(3)," +
85 "LapTime5 CHAR(3)," +
86 "LapTime6 CHAR(3)," +
87 "LapTime7 CHAR(3)," +
88 "LapTime8 CHAR(3)," +
89 "LapTime9 CHAR(3)," +
90 "LapTime10 CHAR(3)," +
91 "LapTime11 CHAR(3)," +
92 "LapTime12 CHAR(3)," +
93 "LapTime13 CHAR(3)," +
94 "LapTime14 CHAR(3)," +
95 "LapTime15 CHAR(3)," +
96 "LapTime16 CHAR(3)," +
97 "LapTime17 CHAR(3)," +
98 "LapTime18 CHAR(3)," +
99 "LapTime19 CHAR(3)," +
100 "LapTime20 CHAR(3)," +
101 "LapTime21 CHAR(3)," +
102 "LapTime22 CHAR(3)," +
103 "LapTime23 CHAR(3)," +
104 "LapTime24 CHAR(3)," +
105 "LapTime25 CHAR(3)," +
106 "SyogaiMileTime CHAR(4)," +
107 "HaronTimeS3 CHAR(3)," +
108 "HaronTimeS4 CHAR(3)," +
109 "HaronTimeL3 CHAR(3)," +
110 "HaronTimeL4 CHAR(3)," +
111 "Corner1 CHAR(1)," +
112 "Syukaisu1 CHAR(1)," +
113 "Jyuni1 CHAR(70)," +
114 "Corner2 CHAR(1)," +
115 "Syukaisu2 CHAR(1)," +
116 "Jyuni2 CHAR(70)," +
117 "Corner3 CHAR(1)," +
118 "Syukaisu3 CHAR(1)," +
119 "Jyuni3 CHAR(70)," +
120 "Corner4 CHAR(1)," +
121 "Syukaisu4 CHAR(1)," +
122 "Jyuni4 CHAR(70)," +
123 "RecordUpKubun CHAR(1)," +
124 "PRIMARY KEY(Year, MonthDay, JyoCD, Kaiji, Nichiji, RaceNum)" +
125 ")";
126 #endregion
127 struct ProgressBar
128 {
129 public int Maximum { set; get; }
130 public int Value { set; get; }
131 }
132 [STAThread]
133 static void Main(string[] args)
134 {
135 var prgDownload = new ProgressBar();
136 var prgJVRead = new ProgressBar();
137
138 var cv = new JVData_CodeConv();
139 cv.FileOpen("CodeTable.csv");
140
141 //=====================================================================================
142 var qLiteConnection = new SQLiteConnection();
143 qLiteConnection.ConnectionString = "Data Source=JVData.sqlite;";
144
145 string[] sqlTables = { basADOUtility.sqlTableCreate_BAMEIORIGINE,
146 basADOUtility.sqlTableCreate_BANUSI,
147 basADOUtility.sqlTableCreate_BATAIJYU,
148 basADOUtility.sqlTableCreate_CHOKYO,
149 basADOUtility.sqlTableCreate_CHOKYO_SEISEKI,
150 basADOUtility.sqlTableCreate_CODE_TABLE,
151 basADOUtility.sqlTableCreate_COURSE,
152 basADOUtility.sqlTableCreate_COURSE_CHANGE,
153 basADOUtility.sqlTableCreate_HANRO,
154 basADOUtility.sqlTableCreate_HANSYOKU,
155 basADOUtility.sqlTableCreate_HARAI,
156 basADOUtility.sqlTableCreate_HASSOU_JIKOKU_CHANGE,
157 basADOUtility.sqlTableCreate_HYOSU,
158 basADOUtility.sqlTableCreate_HYOSU2,
159 basADOUtility.sqlTableCreate_HYOSU_SANREN,
160 basADOUtility.sqlTableCreate_HYOSU_SANRENTAN,
161 basADOUtility.sqlTableCreate_HYOSU_TANPUKU,
162 basADOUtility.sqlTableCreate_HYOSU_UMARENWIDE,
163 basADOUtility.sqlTableCreate_HYOSU_UMATAN,
164 basADOUtility.sqlTableCreate_HYOSU_WAKU,
165 basADOUtility.sqlTableCreate_JOGAIBA,
166 basADOUtility.sqlTableCreate_JYUSYOSIKI,
167 basADOUtility.sqlTableCreate_JYUSYOSIKI_HEAD,
168 basADOUtility.sqlTableCreate_KEITO,
169 basADOUtility.sqlTableCreate_KISYU,
170 basADOUtility.sqlTableCreate_KISYU_CHANGE,
171 basADOUtility.sqlTableCreate_KISYU_SEISEKI,
172 basADOUtility.sqlTableCreate_MINING,
173 basADOUtility.sqlTableCreate_ODDS_SANREN,
174 basADOUtility.sqlTableCreate_ODDS_SANRENTAN,
175 basADOUtility.sqlTableCreate_ODDS_SANRENTAN_HEAD,
176 basADOUtility.sqlTableCreate_ODDS_SANREN_HEAD,
177 basADOUtility.sqlTableCreate_ODDS_TANPUKU,
178 basADOUtility.sqlTableCreate_ODDS_TANPUKUWAKU_HEAD,
179 basADOUtility.sqlTableCreate_ODDS_UMAREN,
180 basADOUtility.sqlTableCreate_ODDS_UMAREN_HEAD,
181 basADOUtility.sqlTableCreate_ODDS_UMATAN,
182 basADOUtility.sqlTableCreate_ODDS_UMATAN_HEAD,
183 basADOUtility.sqlTableCreate_ODDS_WAKU,
184 basADOUtility.sqlTableCreate_ODDS_WIDE,
185 basADOUtility.sqlTableCreate_ODDS_WIDE_HEAD,
186 basADOUtility.sqlTableCreate_RACE,
187 basADOUtility.sqlTableCreate_RECORD,
188 basADOUtility.sqlTableCreate_SALE,
189 basADOUtility.sqlTableCreate_SANKU,
190 basADOUtility.sqlTableCreate_SCHEDULE,
191 basADOUtility.sqlTableCreate_SEISAN,
192 basADOUtility.sqlTableCreate_TAISENGATA_MINING,
193 basADOUtility.sqlTableCreate_TENKO_BABA,
194 basADOUtility.sqlTableCreate_TOKU,
195 basADOUtility.sqlTableCreate_TOKU_RACE,
196 basADOUtility.sqlTableCreate_TORIKESI_JYOGAI,
197 basADOUtility.sqlTableCreate_UMA,
198 basADOUtility.sqlTableCreate_UMA_RACE
199 };
200 var qCreateCommand = qLiteConnection.CreateCommand();
201 qLiteConnection.Open();
202 foreach (var sql in sqlTables)
203 {
204 qCreateCommand.CommandText = sql;
205 qCreateCommand.ExecuteNonQuery();
206 }
207 qLiteConnection.Close();
208
209
210 var selectCmd = new SQLiteCommand();
211 var dataAdapter = new SQLiteDataAdapter();
212 var dataSet = new DataSet();
213
214 selectCmd.Connection = qLiteConnection;
215 selectCmd.CommandText = "SELECT * FROM RACE";
216
217 dataAdapter.SelectCommand = selectCmd;
218 dataAdapter.Fill(dataSet, "RACE");
219
220 //selectCmd.Connection = qLiteConnection;
221 //selectCmd.CommandText = "SELECT * FROM UMA_RACE";
222
223 //dataAdapter.SelectCommand = selectCmd;
224 //dataAdapter.Fill(dataSet, "UMA_RACE");
225
226 //=====================================================================================
227 var jvLink = new JVDTLabLib.JVLink();
228
229 //=====================================================================================
230 jvLink.JVSetUIProperties();
231
232 //=====================================================================================
233 jvLink.JVInit("UNKNOWN");
234
235 //=====================================================================================
236 var nReadCount = 0; // JVOpen: ç·èªã¿è¾¼ã¿ãƒ•ァイル数
237 var nDownloadCount = 0; // JVOpen: ç·ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ãƒ•ァイル数
238 var strLastFileTimestamp = ""; // JVOpen: 最新ファイルã®ã‚¿ã‚¤ãƒ スタンプ
239
240 jvLink.JVOpen("RACE", "19860101000000", 3, ref nReadCount, ref nDownloadCount, out strLastFileTimestamp);
241
242 Console.WriteLine(
243 "èªã¿è¾¼ã¿ãƒ•ァイル数 : " + nReadCount + "\n" +
244 "ダウンãƒãƒ¼ãƒ‰ãƒ•ァイル数 : " + nDownloadCount + "\n" +
245 "タイムスタンプ : " + strLastFileTimestamp + "\n"
246 );
247
248 if (nDownloadCount == 0)
249 {
250 prgDownload.Maximum = 100;
251 prgDownload.Value = 100;
252 }
253 else
254 {
255 prgDownload.Maximum = nDownloadCount;
256 prgDownload.Value = 0;
257 }
258 prgJVRead.Maximum = nReadCount;
259 prgJVRead.Value = 0;
260
261 //=====================================================================================
262 var nBuffSize = 110000; // JVRead: ãƒ‡ãƒ¼ã‚¿æ ¼ç´ãƒãƒƒãƒ•ァサイズ
263 var nNameSize = 256; // JVRead: ファイルåサイズ
264 //var strBuff = new string('\0', nBuffSize); // JVRead: ãƒ‡ãƒ¼ã‚¿æ ¼ç´ãƒãƒƒãƒ•ã‚¡
265 var strFileName = new string('\0', nNameSize); // JVRead: èªã¿è¾¼ã¿ä¸ãƒ•ァイルå
266 var RaceInfo = new JVData_Struct.JV_RA_RACE(); // ãƒ¬ãƒ¼ã‚¹è©³ç´°æƒ…å ±æ§‹é€ ä½“
267 //var RaceUmaInfo = new JVData_Struct.JV_SE_RACE_UMA(); // é¦¬æ¯Žãƒ¬ãƒ¼ã‚¹æƒ…å ±æ§‹é€ ä½“
268
269 // JVGetsã«æ¸¡ã™å¤‰æ•°ã®åˆæœŸåŒ–
270 object strB = null;
271 // オブジェクトã«ãƒã‚¤ãƒˆåž‹é…列をè¨å®š
272 byte[] buffer = new byte[nBuffSize];
273 strB = buffer;
274
275
276 bool flg_exit = false;
277 do
278 {
279 //switch (jvLink.JVRead(out strBuff, out nBuffSize, out strFileName))
280 switch (jvLink.JVGets(ref strB, nBuffSize, out strFileName))
281 {
282 case 0: // 全ファイルèªã¿è¾¼ã¿çµ‚了
283 prgDownload.Value = prgDownload.Maximum;
284 prgJVRead.Value = prgJVRead.Maximum;
285 Console.WriteLine("全ファイルèªã¿è¾¼ã¿çµ‚了: " + prgJVRead.Value + " / " + prgJVRead.Maximum + "\n");
286 flg_exit = true;
287 break;
288 case -1: // ファイル切り替ã‚り
289 prgJVRead.Value = prgJVRead.Value + 1;
290 Console.WriteLine("ファイル切り替ã‚り: " + prgJVRead.Value + " / " + prgJVRead.Maximum + "\n");
291 break;
292 case -3: // ダウンãƒãƒ¼ãƒ‰ä¸
293 prgDownload.Value = jvLink.JVStatus();
294 Console.WriteLine("ダウンãƒãƒ¼ãƒ‰ä¸: " + prgDownload.Value + " / " + prgDownload.Maximum + "\n");
295 break;
296 case -201: // JVInit ã•れã¦ãªã„
297 Console.WriteLine("JVInit ãŒè¡Œã‚れã¦ã„ã¾ã›ã‚“。");
298 flg_exit = true;
299 break;
300 case -203: // JVOpen ã•れã¦ãªã„
301 Console.WriteLine("JVOpen ãŒè¡Œã‚れã¦ã„ã¾ã›ã‚“。");
302 flg_exit = true;
303 break;
304 case -503: // ファイルãŒãªã„
305 Console.WriteLine(strFileName + "ãŒå˜åœ¨ã—ã¾ã›ã‚“。");
306 flg_exit = true;
307 break;
308 case int ret when ret > 0:
309
310 // JVGetsèªè¾¼å¾Œå¤‰æ›ç”¨å¤‰æ•°
311 byte[] retByteData;
312 string retStrData;
313 // JVGetsã§ã‚»ãƒƒãƒˆã•れãŸobject "strB"ã‚’ãƒã‚¤ãƒˆé…列ã«å¤‰æ›
314 retByteData = (byte[])strB;
315 // æ–‡å—コードを指定ã—ã¦æ–‡å—列ã«å¤‰æ›ï¼ˆSJIS)
316 retStrData = System.Text.Encoding.GetEncoding(932).GetString(retByteData);
317
318 if (retStrData.Substring(0, 2) == "RA")
319 {
320 RaceInfo.SetDataB(ref retStrData);
321 basADOUtility.SetJVData_Race(RaceInfo, dataSet);
322 }
323 //else if (strBuff.Substring(0, 2) == "SE")
324 //{
325 // RaceUmaInfo.SetDataB(ref strBuff);
326 // basADOUtility.SetJVData_RaceUma(RaceUmaInfo, dataSet);
327 //}
328 else
329 {
330 // èªã¿é£›ã°ã—
331 jvLink.JVSkip();
332 prgJVRead.Value = prgJVRead.Value + 1;
333 Console.WriteLine("èªã¿é£›ã°ã—: " + prgJVRead.Value + " / " + prgJVRead.Maximum + "\n");
334 }
335 break;
336 }
337 }
338 while (!flg_exit);
339
340
341 // ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æ›´æ–°
342 Console.WriteLine("データ書ãè¾¼ã¿ä¸ãƒ»ãƒ»ãƒ»\n");
343 var commandBuilder1 = new SQLiteCommandBuilder(dataAdapter);
344 selectCmd.Connection = qLiteConnection;
345 selectCmd.CommandText = "SELECT * FROM RACE";
346 dataAdapter.Update(dataSet, "RACE");
347 //var commandBuilder2 = new SQLiteCommandBuilder(dataAdapter);
348 //selectCmd.Connection = qLiteConnection;
349 //selectCmd.CommandText = "SELECT * FROM UMA_RACE";
350 //dataAdapter.Update(dataSet, "UMA_RACE");
351
352 //=====================================================================================
353 jvLink.JVClose();
354
355 //=====================================================================================
356 Console.WriteLine("終了ã§ã™ã€‚何ã‹ã‚ーを押ã—ã¦ãã ã•ã„。\n");
357 Console.ReadKey();
358 }
359 }
360}