读取csv文件网上有很多例子 但是都是相当长的一大串 并且 没 有 注 释
/// <summary> /// 添加数据到数据库 /// </summary> public void insert(string aaa) { FileStream fs = new FileStream(path.SelectedPath + @"pc" + aaa + "-设备.csv", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);//选择文件夹名字 StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);//选择读取格式 StringBuilder sb = new StringBuilder(); //一个可变的字符序列 string excle = ""; while (!sr.EndOfStream)//一直读取到最后一条 { sb.AppendLine(sr.ReadLine()); excle = sb.ToString();//excle就是这个文件完整的一条字符串 用split 分割就好了 } using (BoardDataContext linquser = new BoardDataContext()) { //linquser.ExecuteCommand("TRUNCATE TABLE Board");//清空这个表 linquser.ExecuteCommand("DELETE FROM Board WHERE [BoardNumber]=" + aaa);//删除数据库中已有的数据 //string a = File.ReadAllText(path.SelectedPath + @"user.csv", Encoding.Default);//读数据 string[] rows = new string[] { };//每一行 string[] colum = new string[] { };//每个内容 rows = excle.Split(Environment.NewLine.ToCharArray());//分割每一行 这是分割换行 for (int i = 1; i < rows.Length; i++)//从一开始 去掉第一行 第一行是标题 { if (rows[i] != "") //中间会有很多""空字符串 这里要去掉 { colum = rows[i].Split(',');//然后在分割每一列 if (colum[0] != "") { Board u = new Board(); u.Data = colum[0]; u.Class = colum[1]; u.BoardNumber = colum[2]; u.PatternNumber = colum[3]; u.GoodNumber = colum[4]; u.BadNumber = colum[5]; u.Yield = colum[6]; u.StartTime = colum[7]; u.EndTime = colum[8]; u.TestTime = colum[9]; u.WaitTime = colum[10]; u.OverkapNumber = colum[11]; u.Overkapyield = colum[12]; linquser.Board.InsertOnSubmit(u);//添加数据到数据库就可以了 linquser.SubmitChanges(); } } } } }
网上也有别的读取方式 但是会影响到csv文件打开运行时 程序不能执行这个方法
在一个就是 linq 的用法 本来想先查出这个集合 然后在删除
结果 偶然间从一个大神那 看到这种用法
//linquser.ExecuteCommand("TRUNCATE TABLE Board");//清空这个表
linquser.ExecuteCommand("DELETE FROM Board WHERE [BoardNumber]=" + aaa);//删除数据库中已有的数据
括号里面可以直接加sql语句 那就很直接了