您的位置:首页 > 编程语言 > C#

C#学习笔记 ODBC 操作CSV

2016-06-21 18:03 507 查看
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#-ODBC