前提・実現したいこと
ここに質問の内容を詳しく書いてください。
C#を初めて二週間目でわからないことだらけの初心者です。
OracleのデータベースのテーブルにプログラムでCSVファイルを挿入したいのですがうまくいきません。
データ自体の読み込みは成功しているのですがfor文のループでnameとaddressのカラムにCSVに入っている
名前と住所が記載されず[System.string]と表記されてしまいます。
いろいろとweb検索をしたのですがfor文でCSVのデータを入れているサイトが見つかりません。
発生している問題・エラーメッセージ
DataTableにSystem.string表記
該当のソースコード
C#ここに言語名を入力
ソースコード
public static void Main() { //配列からリストに格納する List<string> lists = new List<string>(); StreamReader sr = new StreamReader(@"C:\file\CSV\test.csv"); //末尾まで繰り返す while (!sr.EndOfStream) { //CSVファイルの一行を読み込む string line = sr.ReadLine(); lists.Add(line); Console.WriteLine(line); } string sql = "insert into CSV_TEST(id,name,address) VALUES (:id, :name, :address)"; try { using (OracleConnection conn = new OracleConnection()) { conn.ConnectionString = "User ID=USER; Password=PASS; Data Source=Data source"; conn.Open(); Console.WriteLine("DBに接続しました。"); using (OracleTransaction transaction = conn.BeginTransaction()) { try { //csvのデータを挿入 for (int i = 0; i < lists.Count(); ++i) { string line = lists[i]; using (OracleCommand cmd = new OracleCommand(sql, conn)) { cmd.BindByName = true; cmd.Parameters.Add(new OracleParameter(":id", OracleDbType.Int32, (i+1), ParameterDirection.Input)); cmd.Parameters.Add(new OracleParameter(":name", OracleDbType.Varchar2, line.Split(','), ParameterDirection.Input)); cmd.Parameters.Add(new OracleParameter(":address", OracleDbType.Varchar2, line.Split(','),ParameterDirection.Input)); cmd.ExecuteNonQuery(); } } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Console.WriteLine(ex.ToString()); } } } } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); } }
試したこと
補足情報(FW/ツールのバージョンなど)
visual studio 2019
A5M2 ver 2.14