string strPath = "c:\test.csv";
DataTable dt = new DataTable();
//Shift JISで読み込む
using (Microsoft.VisualBasic.FileIO.TextFieldParser tfp = new Microsoft.VisualBasic.FileIO.TextFieldParser(strPath, System.Text.Encoding.GetEncoding(932)))
{
//フィールドをが文字で区切るか。デフォルトでDelimited。
tfp.TextFieldType = FieldType.Delimited;
//区切り文字を「,」
tfp.Delimiters = new string { "," };
//フィールドを「"」で囲み、改行・区切り文字を含めるか。デフォルトでtrue。
tfp.HasFieldsEnclosedInQuotes = true;
//フィールドの前後のスペースを削除。デフォルトでtrue。
tfp.TrimWhiteSpace = true;
//先頭行を読み込み、列を定義
string fields = tfp.ReadFields();
foreach (string field in fields)
{
switch (field)
{
case "商品名":
dt.Columns.Add(field, Type.GetType("System.String"));
break;
case "単価":
dt.Columns.Add(field, Type.GetType("System.Int32"));
break;
default:
dt.Columns.Add(field, Type.GetType("System.String"));
break;
}
}
//2行目から、値を読み込む
while (!tfp.EndOfData)
{
string[] values = tfp.ReadFields(); //値を読み込む
dt.Rows.Add(values);
}
tfp.Close();
}
//DBへ1行ずつ取込み
using (SqlConnection cn = new SqlConnection(strCon))
{
cn.Open();
for (int r = 0; r < dt.Rows.Count; r++)
{
using (SqlCommand cmd = cn.CreateCommand())
{
cmd.CommandText = @"
insert into Table1 ([商品名],[単価]) values (@name, @tanka)";
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = dt.Rows[r]["商品名"];
cmd.Parameters.Add("@tanka", SqlDbType.Int).Value = dt.Rows[r]["単価"];
cmd.ExecuteNonQuery();
}
}
cn.Close();
}