大佬教程收集整理的这篇文章主要介绍了如何将空值转换为默认(浮点)0.0 值,并应将该默认值保存到 MYSql 版本(6.0.11-alpha-community),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
动态读取excel数据(来自filezilla)并保存到MysqL版本(6.0.11-Alpha-community)
我正在使用存储过程(捕获 Excel.csv 数据)并将其保存到 MysqL 版本(6.0.11-Alpha-community)中
但是当我执行或将数据保存到 MysqL 时,我收到此错误:
上图中2021070701.csv和2021070801.csv正在读取并保存到MysqL中是可以的,因为excel文件(特定单元格)中没有空数据。
当它执行到这个文件 2021070201.csv 时,我收到“格式异常错误”
2021070201.csv(excel) 数据格式如下: (2021070201.csv excel数据和蓝色突出显示的单元格是浮点值,单元格包含空数据)
这是我写的逻辑读取excel数据并存入MysqL
else if (mpType.Equals("InDices",StringComparison.InvariantCultureIgnoreCasE))
{
MAE_Repo.InsertNseInDicesPrice("Usp_tbl_InTraday_NseInDicesPrice",Convert.ToInt32(res[0]),res[1],Convert.ToSingle(res[2]),Convert.ToSingle(res[3]),Convert.ToSingle(res[4]),Convert.ToSingle(res[5]),Convert.ToSingle(res[6]),Convert.ToSingle(res[7]),Convert.ToSingle(res[8]),Convert.ToSingle(res[9]),Convert.ToSingle(res[10]),Convert.TodatetiR_395_11845@e(res[11]),res[12],timestamp,fileName);
}
这就是我写的 SP 逻辑:
Public static voID InsertNseInDicesPrice(String Procname,int ipID,int ipIndextoken,String ipSymbol,float ipCLOSE,float ipOPEN,float ipHigh,float ipLow,float ipVolume,float ipVALUE,float ipprev_close,float ipCHANGE,float ipPer_Change,datetiR_395_11845@e ipUpdtime,String ipFlag,datetiR_395_11845@e ipCreatedOn,String ipfileName)
{
con.open();
MysqLCommand cmdsel = new MysqLCommand(Procname,con);
cmdsel.CommandType = System.Data.CommandType.StoredProcedure;
cmdsel.Parameters.AdDWithValue("@IPID",0);
cmdsel.Parameters.AdDWithValue("@IPIndextoken",ipIndextoken);
cmdsel.Parameters.AdDWithValue("@IPSymbol",ipSymbol);
cmdsel.Parameters.AdDWithValue("@IPCLOSE",ipCLOSE);
cmdsel.Parameters.AdDWithValue("@IPOPEN",ipOPEN);
cmdsel.Parameters.AdDWithValue("@IPHigh",ipHigh);
cmdsel.Parameters.AdDWithValue("@IPLow",ipLow);
cmdsel.Parameters.AdDWithValue("@IPVolume",ipVolumE);
cmdsel.Parameters.AdDWithValue("@IPVALUE",ipvalue);
cmdsel.Parameters.AdDWithValue("@IPprev_close",ipprev_closE);
cmdsel.Parameters.AdDWithValue("@IPCHANGE",ipCHANGE);
cmdsel.Parameters.AdDWithValue("@IPPer_Change",ipPer_ChangE);
cmdsel.Parameters.AdDWithValue("@IPUpdtime",ipUpdtimE);
cmdsel.Parameters.AdDWithValue("@IPFlag",ipFlag);
cmdsel.Parameters.AdDWithValue("@IPCreatedOn",ipCreatedOn);
cmdsel.Parameters.AdDWithValue("@IPfilename",ipfileName);
cmdsel.Parameters.AdDWithValue("@OPType",1);
MysqLDataAdapter da = new MysqLDataAdapter(cmdsel);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
}
这是我在MysqL中的存储过程
DEliMITER $$
USE `marketprice_nse`$$
DROP PROCEDURE IF EXISTS `Usp_tbl_InTraday_NseInDicesPrice`$$
CREATE defineR=`root`@`localhost` PROCEDURE `Usp_tbl_InTraday_NseInDicesPrice`(IN IPID BIGINT,IN IPIndextoken INT,IN IPSymbol VARCHAR(20),IN IPCLOSE float,IN IPOPEN float,IN IPHigh float,IN IPLow float,IN IPVolume float,IN IPVALUE float,IN IPprev_close float,IN IPCHANGE float,IN IPPer_Change float,IN IPUpdtime datetiR_395_11845@E,IN IPFlag VARCHAR(1),IN IPCreatedOn datetiR_395_11845@E,IN IPfilename varchar(30),IN OPtype int)
BEGIN
IF (OPType = 1)-- Insert
THEN
-- IF (SELECT 1 FROM tbl_inTraday_nseinDicesprice WHERE filename = IPfileName) = 0
-- THEN
-- BEGIN
INSERT INTO tbl_InTraday_NseInDicesPrice (ID,Indextoken,Symbol,`CLOSE`,`OPEN`,High,Low,Volume,`VALUE`,prev_close,`CHANGE`,Per_Change,Updtime,Flag,CreatedOn,fileName) VALUES (IPID,IPIndextoken,IPSymbol,IPCLOSE,IPOPEN,IPHigh,IPLow,IPVolume,IPVALUE,IPprev_close,IPCHANGE,IPPer_Change,IPUpdtime,IPFlag,IPCreatedOn,IPfileName);
-- END;
-- END IF;
ELSEIF (OPType = 2)-- check filename availability
THEN
SELECT * FROM tbl_inTraday_nseinDicesprice WHERE filename=IPfilename;
END IF;
END$$
DEliMITER ;
我尝试了不同的方法
Single.Parse() Method
float.Parse() Method
Convert.ToSingle() Method
这些方法都没有解决格式异常
如何在没有任何格式异常的情况下将默认值(0.0)保存到 MysqL 中?
根据评论,这就是答案:
你可以写Convert.ToSingle(res[6])
而不是写Convert.ToSingle(res[6] ?? "0.0")
。然后,如果 res[6] 的值为 null,则将使用字符串“0.0”转换为单个。
如果您需要担心各种语言环境以句点或逗号作为小数点分隔符,您可以简单地使用“0”作为默认值(这也将转换为 0.0 浮点数),或者创建一个具有本地小数点分隔符的字符串
String defaultFloatValue = (0.0F).toString();
并使用它代替“0.0”字面量。
以上是大佬教程为你收集整理的如何将空值转换为默认(浮点)0.0 值,并应将该默认值保存到 MYSql 版本(6.0.11-alpha-community)全部内容,希望文章能够帮你解决如何将空值转换为默认(浮点)0.0 值,并应将该默认值保存到 MYSql 版本(6.0.11-alpha-community)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。