teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

Data

2021/10/31 07:34

投稿

Hajimer-99
Hajimer-99

スコア0

title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
  ### 発生している問題・エラーメッセージ
11
11
 
12
12
  ```
13
- DetaTableにSystem.string表記
13
+ DataTableにSystem.string表記
14
14
  ```
15
15
 
16
16
  ### 該当のソースコード

2

前のコードがないとわかりずらいかも知れないのでfor文の前を追加しました。

2021/10/31 07:34

投稿

Hajimer-99
Hajimer-99

スコア0

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ここに質問の内容を詳しく書いてください。
4
4
  C#を初めて二週間目でわからないことだらけの初心者です。
5
- OracleのデータテーブルにプログラムでCSVファイルを挿入したいのですがうまくいきません。
5
+ OracleのデータベースのテーブルにプログラムでCSVファイルを挿入したいのですがうまくいきません。
6
6
  データ自体の読み込みは成功しているのですがfor文のループでnameとaddressのカラムにCSVに入っている
7
7
  名前と住所が記載されず[System.string]と表記されてしまいます。
8
8
  いろいろとweb検索をしたのですがfor文でCSVのデータを入れているサイトが見つかりません。
@@ -17,27 +17,73 @@
17
17
 
18
18
  C#ここに言語名を入力
19
19
  ソースコード
20
-
20
+ ```
21
+ public static void Main()
22
+ {
23
+ //配列からリストに格納する
24
+ List<string> lists = new List<string>();
25
+
26
+ StreamReader sr = new StreamReader(@"C:\file\CSV\test.csv");
27
+
28
+ //末尾まで繰り返す
29
+ while (!sr.EndOfStream)
30
+ {
31
+ //CSVファイルの一行を読み込む
32
+ string line = sr.ReadLine();
33
+ lists.Add(line);
34
+ Console.WriteLine(line);
35
+ }
36
+
37
+ string sql = "insert into CSV_TEST(id,name,address) VALUES (:id, :name, :address)";
38
+ try
39
+ {
40
+ using (OracleConnection conn = new OracleConnection())
41
+ {
42
+ conn.ConnectionString =
43
+ "User ID=USER; Password=PASS; Data Source=Data source";
44
+ conn.Open();
45
+ Console.WriteLine("DBに接続しました。");
46
+ using (OracleTransaction transaction = conn.BeginTransaction())
47
+ {
48
+ try
49
+ {
21
- //CSVデータ挿入
50
+ //csvのデータ挿入
22
51
  for (int i = 0; i < lists.Count(); ++i)
23
- {   
52
+ {
24
-  
25
- ------string line = lists[i];
53
+ string line = lists[i];
26
54
 
27
- ------ using (OracleCommand cmd = new OracleCommand(sql, conn))
55
+ using (OracleCommand cmd = new OracleCommand(sql, conn))
28
- --- {
56
+ {
29
- --------- cmd.BindByName = true;
57
+ cmd.BindByName = true;
30
- ------------cmd.Parameters.Add(new OracleParameter(":id", OracleDbType.Int32,
58
+ cmd.Parameters.Add(new OracleParameter(":id", OracleDbType.Int32,
31
- ------------(i+1), ParameterDirection.Input));
59
+ (i+1), ParameterDirection.Input));
32
- -------------cmd.Parameters.Add(new OracleParameter(":name", OracleDbType.Varchar2,
60
+ cmd.Parameters.Add(new OracleParameter(":name", OracleDbType.Varchar2,
33
- ------------ line.Split(','), ParameterDirection.Input));
61
+ line.Split(','), ParameterDirection.Input));
34
- ------------cmd.Parameters.Add(new OracleParameter(":address",racleDbType.Varchar2,
62
+ cmd.Parameters.Add(new OracleParameter(":address", OracleDbType.Varchar2,
35
- ------------line.split(','),ParameterDirection.Input));
63
+ line.Split(','),ParameterDirection.Input));
36
64
 
37
- ------------cmd.ExecuteNonQuery();
65
+ cmd.ExecuteNonQuery();
38
- -------}
66
+ }
39
67
  }
40
68
 
69
+ transaction.Commit();
70
+ }
71
+ catch (Exception ex)
72
+ {
73
+ transaction.Rollback();
74
+ Console.WriteLine(ex.ToString());
75
+ }
76
+ }
77
+ }
78
+ }
79
+ catch (Exception ex)
80
+ {
81
+ Console.WriteLine(ex.Message.ToString());
82
+ }
83
+ }
84
+
85
+ ```
86
+
41
87
  ### 試したこと
42
88
 
43
89
 

1

質問内容と文字の大小を直しました

2021/10/31 07:31

投稿

Hajimer-99
Hajimer-99

スコア0

title CHANGED
@@ -1,1 +1,1 @@
1
- C#でdetatableにCSVデータの挿入のやり方
1
+ C# Oracle データベースのテーブル CSV データの挿入のやり方
body CHANGED
@@ -10,33 +10,32 @@
10
10
  ### 発生している問題・エラーメッセージ
11
11
 
12
12
  ```
13
- detatableにSystem.string表記
13
+ DetaTableにSystem.string表記
14
14
  ```
15
15
 
16
16
  ### 該当のソースコード
17
17
 
18
18
  C#ここに言語名を入力
19
19
  ソースコード
20
- //csvのデータを挿入
20
+
21
21
  //CSVデータの挿入
22
22
  for (int i = 0; i < lists.Count(); ++i)
23
- {
23
+ {   
24
+  
24
-                 string line = lists[i];
25
+ ------string line = lists[i];
25
26
 
26
- using (OracleCommand cmd = new OracleCommand(sql, conn))
27
+ ------ using (OracleCommand cmd = new OracleCommand(sql, conn))
27
- {
28
+ --- {
28
- cmd.BindByName = true;
29
+ --------- cmd.BindByName = true;
29
- cmd.Parameters.Add(new OracleParameter(":id", OracleDbType.Int32,
30
+ ------------cmd.Parameters.Add(new OracleParameter(":id", OracleDbType.Int32,
30
- (i+1), ParameterDirection.Input));
31
+ ------------(i+1), ParameterDirection.Input));
31
- cmd.Parameters.Add(new OracleParameter(":name", OracleDbType.Varchar2,
32
+ -------------cmd.Parameters.Add(new OracleParameter(":name", OracleDbType.Varchar2,
32
- line.Split(','), ParameterDirection.Input));
33
+ ------------ line.Split(','), ParameterDirection.Input));
33
- cmd.Parameters.Add(new OracleParameter(":address",
34
+ ------------cmd.Parameters.Add(new OracleParameter(":address",racleDbType.Varchar2,
34
-
35
- racleDbType.Varchar2,
36
- line.split(','),ParameterDirection.Input));
35
+ ------------line.split(','),ParameterDirection.Input));
37
36
 
38
- cmd.ExecuteNonQuery();
37
+ ------------cmd.ExecuteNonQuery();
39
- }
38
+ -------}
40
39
  }
41
40
 
42
41
  ### 試したこと