MyEclipse 老是 out of memory的一个解决方法
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-01-15 09:50
一个读写csv文件的C#类
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-01-14 21:31
CSV(Comma-Separated Values )文件即用逗号分隔的文本文件。
下面是用C#写的一个简单的读写CSV文件的类。
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace CSVDemo
{
/// <summary>
/// CSVUtil is a helper class handling csv files.
/// </summary>
public class CSVUtil
{
private CSVUtil()
{
}
//write a new file, existed file will be overwritten
public static void WriteCSV(string filePathName,List<String[]>ls)
{
WriteCSV(filePathName,false,ls);
}
//write a file, existed file will be overwritten if append = false
public static void WriteCSV(string filePathName,bool append, List<String[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(String[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“,",strArr) );
}
fileWriter.Flush();
fileWriter.Close();
}
public static List<String[]> ReadCSV(string filePathName)
{
List<String[]> ls = new List<String[]>();
StreamReader fileReader=new StreamReader(filePathName);
string strLine="";
while (strLine != null)
{
strLine = fileReader.ReadLine();
if (strLine != null && strLine.Length>0)
{
ls.Add(strLine.Split(','));
//Debug.WriteLine(strLine);
}
}
fileReader.Close();
return ls;
}
}
}
如何使用这个类可以看源代码。
CSVDemo.rar (12.76 KB , 下载:514次)
源代码演示了:
1.listview控件,openFileDialog控件的简单运用;
2.autoseed的Random类的使用;
3.保存CSV文件;
4.读取CSV文件;
5.简单的分层思想,视图-listview,业务数据-data,永久数据-csv file
本代码不涉及:
1.listview控件的复杂控制
2.CSV文件内容合法性检验,例如每行是否有相同的列。
Update
2007-12-14 一个不简单的处理csv文件的C#类(库)
http://www.codeproject.com/KB/database/CsvReader.aspx
我没有用过,连下载都没有,因为我用不着,也许某一天会有用。
2008-1-14 按游客的指点修改了WriteCSV,精简了代码,Demo的代码也已更新。
下面是用C#写的一个简单的读写CSV文件的类。
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace CSVDemo
{
/// <summary>
/// CSVUtil is a helper class handling csv files.
/// </summary>
public class CSVUtil
{
private CSVUtil()
{
}
//write a new file, existed file will be overwritten
public static void WriteCSV(string filePathName,List<String[]>ls)
{
WriteCSV(filePathName,false,ls);
}
//write a file, existed file will be overwritten if append = false
public static void WriteCSV(string filePathName,bool append, List<String[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(String[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“,",strArr) );
}
fileWriter.Flush();
fileWriter.Close();
}
public static List<String[]> ReadCSV(string filePathName)
{
List<String[]> ls = new List<String[]>();
StreamReader fileReader=new StreamReader(filePathName);
string strLine="";
while (strLine != null)
{
strLine = fileReader.ReadLine();
if (strLine != null && strLine.Length>0)
{
ls.Add(strLine.Split(','));
//Debug.WriteLine(strLine);
}
}
fileReader.Close();
return ls;
}
}
}
如何使用这个类可以看源代码。
CSVDemo.rar (12.76 KB , 下载:514次)源代码演示了:
1.listview控件,openFileDialog控件的简单运用;
2.autoseed的Random类的使用;
3.保存CSV文件;
4.读取CSV文件;
5.简单的分层思想,视图-listview,业务数据-data,永久数据-csv file
本代码不涉及:
1.listview控件的复杂控制
2.CSV文件内容合法性检验,例如每行是否有相同的列。
Update
2007-12-14 一个不简单的处理csv文件的C#类(库)
http://www.codeproject.com/KB/database/CsvReader.aspx
我没有用过,连下载都没有,因为我用不着,也许某一天会有用。
2008-1-14 按游客的指点修改了WriteCSV,精简了代码,Demo的代码也已更新。
标签: CSV文件
IIS重启后WEB站点不能自动重启故障解决一例
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-01-10 14:24
世界最大的等离子体电视开发完成
作者: (http://www.albertsong.com/) 日期: 2008-01-09 22:07
Loveyuki又回来了
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-01-08 18:25
学Excel VBA的最好网站
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-01-07 22:32
C#操作MySQL数据库的简单例子
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-01-05 22:10
本示例演示了用C#操作MySQL的方法,提供了三个可重用的类MySqlDBUtil,MySqlPageUtil,Page。
本示例由 C#操作Access数据库的简单例子(http://www.albertsong.com/read-56.html)修改而来。
1.首先下载MySQL数据库的.NET驱动
http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.8.1-noinstall.zip/from/pick#mirrors
将bin目录里的MySql.Data.dll文件复制到工程目录,并且将dll的引用加入到项目中,这样就可以通过相关的类来操作MySQL数据库了。
using MySql.Data.MySqlClient;
using System.Data;
连接字符串:String connectionString = "server=127.0.0.1;user id=root; password=as; database=albertsong; pooling=false;charset=utf8";
连接字符串中各个项目的意思是很明确的,需要注意的是charset应该设置成和数据库表的charset一致,否则可能出现中文乱码。
然后将整个项目中的OleDb用MySql替换,这样基本上就可以了。不同的是带参数的sql语句,
Access中是
string sql="insert into product(name,quantity,price,sale_date,checked_flag)values(?,?,?,?,?)";
parameters[0]=new MySqlParameter("@name",MySqlDbType.VarChar,100);
MySql中应改为
string sql="insert into product(name,quantity,price,sale_date,checked_flag)values(?name,?quantity,?price,?sale_date,?checked_flag)";
parameters[0]=new MySqlParameter("?name",MySqlDbType.VarChar,100);
2.取得MySQL自增标识字段在插入数据后的id值
cmd.CommandText = @"select @@identity";
int value = Int32.Parse(cmd.ExecuteScalar().ToString());
return value;
用cmd.CommandText = @"select LAST_INSERT_ID()";结果一样,两者的区别没有研究。
3.分页查询
使用Limit子句来处理分页查询,这样相对于Access的分页查询,代码大量简化,效率也会提高。
代码这里下载
MySqlDBUtilDemo.rar (198.41 KB , 下载:464次)
本例程是一个c#的winform程序,但是数据访问类可以在Web环境下使用。
运行前先利用bin\Release下的sql语句文件建表并修改MySqlDBUtil中的连接字符串。
本例程演示了:
1.MySQL数据库的插入,更新,修改,查询;
2.带参数的sql语句的使用,而不是拼SQL;
3.使用Limit子句的分页查询;
4.用事务同时执行多个SQL语句;
5.在插入数据的同时返回最新的ID值;
6.整型,实型,字符串,日期型,布尔型五种数据类型的操作;
7.使用正则表达式来验证整数和实数;
8.listview用来显示数据的一些基本用法。
本示例不包括:
1.完善的分页封装,只提供了分页的简单包装。
2.嵌套的事务处理,提供了同时执行多个sql语句的事务处理,但不支持嵌套事务。
3.listview的使用,只是利用winform控件来演示数据访问,因此不能作为winform编程的良好示例,例如添加数据时界面并没有很好地更新。
后记:
由于API接口一致,将操作Access数据库的类改为操作MySQL数据库的类很容易,利用这两个示例,可以学习基本的数据库操作,也可以用来做一些简单的应用程序了。实际的项目中有成熟的开源项目可用,如iBATIS.NET和NHibernate,这些项目都建筑在这些基本的API之上,先学习我写的这两个小例子也有助于学习理解这些项目。
本示例由 C#操作Access数据库的简单例子(http://www.albertsong.com/read-56.html)修改而来。
1.首先下载MySQL数据库的.NET驱动
http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.8.1-noinstall.zip/from/pick#mirrors
将bin目录里的MySql.Data.dll文件复制到工程目录,并且将dll的引用加入到项目中,这样就可以通过相关的类来操作MySQL数据库了。
using MySql.Data.MySqlClient;
using System.Data;
连接字符串:String connectionString = "server=127.0.0.1;user id=root; password=as; database=albertsong; pooling=false;charset=utf8";
连接字符串中各个项目的意思是很明确的,需要注意的是charset应该设置成和数据库表的charset一致,否则可能出现中文乱码。
然后将整个项目中的OleDb用MySql替换,这样基本上就可以了。不同的是带参数的sql语句,
Access中是
string sql="insert into product(name,quantity,price,sale_date,checked_flag)values(?,?,?,?,?)";
parameters[0]=new MySqlParameter("@name",MySqlDbType.VarChar,100);
MySql中应改为
string sql="insert into product(name,quantity,price,sale_date,checked_flag)values(?name,?quantity,?price,?sale_date,?checked_flag)";
parameters[0]=new MySqlParameter("?name",MySqlDbType.VarChar,100);
2.取得MySQL自增标识字段在插入数据后的id值
cmd.CommandText = @"select @@identity";
int value = Int32.Parse(cmd.ExecuteScalar().ToString());
return value;
用cmd.CommandText = @"select LAST_INSERT_ID()";结果一样,两者的区别没有研究。
3.分页查询
使用Limit子句来处理分页查询,这样相对于Access的分页查询,代码大量简化,效率也会提高。
代码这里下载
MySqlDBUtilDemo.rar (198.41 KB , 下载:464次)本例程是一个c#的winform程序,但是数据访问类可以在Web环境下使用。
运行前先利用bin\Release下的sql语句文件建表并修改MySqlDBUtil中的连接字符串。
本例程演示了:
1.MySQL数据库的插入,更新,修改,查询;
2.带参数的sql语句的使用,而不是拼SQL;
3.使用Limit子句的分页查询;
4.用事务同时执行多个SQL语句;
5.在插入数据的同时返回最新的ID值;
6.整型,实型,字符串,日期型,布尔型五种数据类型的操作;
7.使用正则表达式来验证整数和实数;
8.listview用来显示数据的一些基本用法。
本示例不包括:
1.完善的分页封装,只提供了分页的简单包装。
2.嵌套的事务处理,提供了同时执行多个sql语句的事务处理,但不支持嵌套事务。
3.listview的使用,只是利用winform控件来演示数据访问,因此不能作为winform编程的良好示例,例如添加数据时界面并没有很好地更新。
后记:
由于API接口一致,将操作Access数据库的类改为操作MySQL数据库的类很容易,利用这两个示例,可以学习基本的数据库操作,也可以用来做一些简单的应用程序了。实际的项目中有成熟的开源项目可用,如iBATIS.NET和NHibernate,这些项目都建筑在这些基本的API之上,先学习我写的这两个小例子也有助于学习理解这些项目。










