C#学习笔记 ODBC 操作CSV

1,逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)
规则编辑
1 )开头是不留空,以行为单位。
2 )可含或不含列名,含列名则居文件第一行。
3 )一行数据不跨行,无空行。
4 )以半角逗号(即,)作分隔符,列为空也要表达其存在。
5 )列内容如存在半角逗号(即,)则用半角双引号(即”“)将该字段值包含起来。
6 )列内容如存在半角引号(即”)则应替换成半角双引号(”“)转义,并用半角引号(即”“)将该字段值包含起来。
7 )文件读写时引号,逗号操作规则互逆。
8 )内码格式不限,可为 ASCII、Unicode 或者其他。
9 )不支持特殊字符

2,检查驱动:控制面板->管理工具->数据源(ODBC)->驱动程序(类似Microsoft Access Text Driver (*.txt, *.csv))
注:无驱动,需要安装对应系统的Office(位数保持一致),版本在office2007以上

3,ODBC查询(Select)

//例如---C:\\1.csv
 System.Data.DataTable dtCSV = new System.Data.DataTable();
 string strConn = @"Driver={Microsoft Access Text Driver (*.txt, *.csv)};Dbq=";
 strConn += filePath;  //注意此处为文件路径。例如C:\\
 strConn += ";Extensions=asc,csv,tab,txt;";
 System.Data.Odbc.OdbcConnection odbcConn = new System.Data.Odbc.OdbcConnection(strConn);

 try
 {
     string strSql = "select * from 1.csv" ; 
     //SQL查询语句1:select * form 表格名 
     //SQL查询语句2:select * form 表格名 where 条件 //注意:此处的条件会按照csv的第一行数据当做列操作                   
     System.Data.Odbc.OdbcDataAdapter odbcCSVDataAdapter = new System.Data.Odbc.OdbcDataAdapter(strSql, odbcConn);
     odbcCSVDataAdapter.Fill(dtCSV);
     if (odbcCSVDataAdapter != null)
     {
         odbcCSVDataAdapter.Dispose();
     }
     if (odbcConn != null)
     {
         odbcConn.Close();
     }
 }
 catch (Exception excp)
 {
     if (odbcConn != null)
     {
         odbcConn.Close();
     }
 }

4,插入数据

 using (System.IO.FileStream fs = System.IO.File.Open(fileDirectory + fileName, System.IO.FileMode.Append))
 {
 using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs))
 {
         sw.WriteLine("A,B,C,D");
         sw.Close();
     }
     fs.Close();
 }
 return true;
}
catch (Exception excp)
{
//
}

5,读取数据

System.Data.DataTable mycsvdt = new System.Data.DataTable();
try
 {
     int intColCount = 0;
     bool blnFlag = true;
     System.Data.DataColumn mydc;
     System.Data.DataRow mydr;
     string strline;
     string[] aryline;
     System.IO.StreamReader mysr = new System.IO.StreamReader("C:\\1.csv", Encoding.GetEncoding("Gb2312"));
     while ((strline = mysr.ReadLine()) != null)
     {
         aryline = strline.Split(new char[] { ',' });
         intColCount = aryline.Length;
         //给datatable加上列名
         if (blnFlag)
         {
             blnFlag = false;
             for (int i = 0; i < intColCount; i++)
             {
                 mydc = new System.Data.DataColumn(aryline[i]);
                 mycsvdt.Columns.Add(mydc);
             }
             continue;
         }
         //填充数据并加入到datatable中
         mydr = mycsvdt.NewRow();
         for (int i = 0; i < intColCount; i++)
         {
             mydr[i] = aryline[i];
         }
         mycsvdt.Rows.Add(mydr);
     }
     mysr.Close();
 }
 catch (Exception excp)
 {
//
 }

6,可按照ODBC操作Excel的办法操作CSV文件(前提:按照Excel表格生成的方式生成csv,其实本质是生成excel,只是命名为CSV格式的,所以没有实际意义,如果不按照Excel的生成格式生成csv,会报错:外部表的格式不是预计的类型),可以进行查询,插入,更新操作

你可能感兴趣的:(C#学习笔记)