C#传递 mysql 存储过程 decimal参数的问题

幕后黑手-Boss 2008-12-09 11:40:51

MySqlParameter[] param = new MySqlParameter[]
{
new MySqlParameter("m_name",MySqlDbType.VarChar,100),
new MySqlParameter("m_courseID",MySqlDbType.Int32,11),
new MySqlParameter("m_info",MySqlDbType.TinyText),
new MySqlParameter("m_categoryID",MySqlDbType.Int32,11),
new MySqlParameter("m_teacher",MySqlDbType.VarChar,100),
new MySqlParameter("m_price",MySqlDbType.Decimal,9),
new MySqlParameter("m_orderNum",MySqlDbType.Int32,11),
new MySqlParameter("m_state",MySqlDbType.Bit,1)
};

param[0].Value = className;
param[1].Value = courseID;
param[2].Value = info;
param[3].Value = categoryID;
param[4].Value = teacherID;
param[5].Precision = 9;
param[5].Scale = 2;
param[5].Value = price;
param[6].Value = orderNum;
param[7].Value = state;

再传递这个price也就是 param[5]的时候,如果传递是整数,比如19,20等等就没事
但是要是传送带小数点的就不行,比如 19.01 的时候就会报错。
请问这个类型的参数应该怎么传递呢?
...全文
311 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
幕后黑手-Boss 2008-12-09
  • 打赏
  • 举报
回复
好吧
我试试
嘿嘿,顺便说一下
虽然mysql的存储过程用?时标准的
不过不加?也可以
我试一下
嘎嘎,准备结贴
cong1212 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhoufoxcn 的回复:]
C# code
MySqlParameter[] param = new MySqlParameter[]
{
new MySqlParameter("?m_name",MySqlDbType.VarChar,100),
new MySqlParameter("?m_courseID",MySqlDbType.Int32,11),
new MySqlParameter("?m_info",MySqlDbType.TinyText),
new MySqlParameter("?m_categoryID",MySqlDbType.Int32,11),
new MySqlParameter("?m…
[/Quote]

顶一下这楼的
jiang_jiajia10 2008-12-09
  • 打赏
  • 举报
回复
new MySqlParameter("?m_price",MySqlDbType.Decimal)
周公 2008-12-09
  • 打赏
  • 举报
回复
你如果要指定Type,那就要用实际的类型大小。
MySqlDbType.Int32,11
MySqlDbType.Decimal,9
这些都有可能会有问题。
周公 2008-12-09
  • 打赏
  • 举报
回复

MySqlParameter[] param = new MySqlParameter[]
{
new MySqlParameter("?m_name",MySqlDbType.VarChar,100),
new MySqlParameter("?m_courseID",MySqlDbType.Int32,11),
new MySqlParameter("?m_info",MySqlDbType.TinyText),
new MySqlParameter("?m_categoryID",MySqlDbType.Int32,11),
new MySqlParameter("?m_teacher",MySqlDbType.VarChar,100),
new MySqlParameter("?m_price",MySqlDbType.Decimal),//去掉Size定义试试
new MySqlParameter("?m_orderNum",MySqlDbType.Int32,11),
new MySqlParameter("?m_state",MySqlDbType.Bit,1)
};


按照我的写法试试
jzywh 2008-12-09
  • 打赏
  • 举报
回复
股技术数据库里面的类型不对
hao1hao2hao3 2008-12-09
  • 打赏
  • 举报
回复
你数据库中的m_price字段是什么类型?是不是被设置成了整型? 或者你自己设置断点获取该SQL语句直接执行(没用过mysql,不知在哪执行)看看有没有问题。
wuyq11 2008-12-09
  • 打赏
  • 举报
回复
?m_price
参考
http://blog.csdn.net/hngyw/archive/2007/08/02/1723532.aspx

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧