今天就一个客户端的任务:1、把Excel文件转成特定格式插入到数据库中;2、查出该文件,并且导出Excel文件;3、如果插入数据错误,则把刚插入的数据删除掉。感觉比较简单,可是,墨迹了一天呀。。。。总结一下吧!
一、 mysql数据库的存储过程是在“函数”列表里的,并且向外传参数时可以参考下边的代码:
首先是连接字符串 stringConn=“server=192.168.1.1;User ID=XXXXX;Password=XXXXXXX;database=lms;Connection Reset=FALSE ;charset=utf8”
public static void ImportEpc_Insert(string UIDNum, string EPCNum, int IsDistribute, string DistrubuteMatch, out int isAlarm)
{
isAlarm = 0;
string procedureName = "原始数据_数据加密_增加";
MySqlParameter[] thisParms = new MySqlParameter[5];
thisParms[0] = new MySql.Data.MySqlClient.MySqlParameter("@UIDNum", UIDNum);
thisParms[1] = new MySql.Data.MySqlClient.MySqlParameter("@EPCNum", EPCNum);
thisParms[2] = new MySql.Data.MySqlClient.MySqlParameter("@IsDistribute", IsDistribute);
thisParms[3] = new MySql.Data.MySqlClient.MySqlParameter("@DistrubuteMatch", DistrubuteMatch);
thisParms[4] = new MySql.Data.MySqlClient.MySqlParameter("@isAlarm", isAlarm);
thisParms[4].Direction = ParameterDirection.Output;
DataAccess.MySQL_ExecuteStoredProcedure(procedureName, ref thisParms);
isAlarm=Convert.ToInt32(thisParms[4].Value);
}
对应的存储过程代码为:
BEGIN
DECLARE countNum int DEFAULT 0;
SELECT count(*) into countNum from 原始数据_数据加密 where UID=UIDNum;
if countNum<=0
THEN insert into `原始数据_数据加密`(UID,MD5_EPC,是否分配,分配批次) VALUES(UIDNum,EPCNum,IsDistribute,DistrubuteMatch);
set isAlarm=0;
ELSE
set isAlarm=1;
end IF;
END
参数列为:
IN `UIDNum` varchar(200),IN `EPCNum` varchar(200),IN `IsDistribute` int,IN `DistrubuteMatch` varchar(200),OUT `isAlarm` int
二、对于app.config文件,当项目是几层结构时,最上层的winform窗体对config文件初始化
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
new ApplicationConfig();//初始化配置文件
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LMS_Import());
}
三、最好都写参数的XML注释,这样不会发警告!累了!睡了!