繁体   English   中英

使用vb.net插入mysql时,十进制值不正确

[英]incorrect decimal value when inserting mysql using vb.net

美好的一天!希望有人可以提前帮助我。 我想使用vb.net将1,000,500.00(INPUT FROM TEXTBOX)插入到mysql数据库中,但是我收到此错误(列''第1行的数量'的十进制值'1,000,000.00'不正确)

== INSERT CODE ==

Query = "INSERT INTO tbl_bills(payee_id,DueDate,Amount,account_id) values 
('" + payee_ID_EnterBills + "','" & cmbbx_EBdueDate.Value.ToString("yyyy-MM-dd") & "','" & txtbx_EBamount.Text & " ', '" + account_ID_EnterBills + "')"

注意:1,000,500.00 ----用户在(txtbx_EBamount)TEXTBOX中输入

==我的创建表语句==

CREATE TABLE `tbl_bills` (
  `bills_id` int(6) NOT NULL AUTO_INCREMENT,
  `payee_id` int(3) DEFAULT NULL,
  `DueDate` date DEFAULT NULL,
  `Amount` decimal(10,2) DEFAULT NULL,
  `account_id` int(3) DEFAULT NULL,
  `bill_Status_id` smallint(1) DEFAULT '1',
  PRIMARY KEY (`bills_id`),
  KEY `FK_tbl_bills` (`payee_id`),
  KEY `FK_tbl_bills2` (`account_id`),
  KEY `FK_tbl_bills_2` (`bill_Status_id`),
  CONSTRAINT `FK_tbl_bills` FOREIGN KEY (`payee_id`) REFERENCES `tbl_payee` (`payee_id`),
  CONSTRAINT `FK_tbl_bills2` FOREIGN KEY (`account_id`) REFERENCES `tbl_account` (`account_id`),
  CONSTRAINT `FK_tbl_bills_2` FOREIGN KEY (`bill_Status_id`) REFERENCES `tbl_billingstatus` (`bill_status_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1

执行sql命令的唯一正确方法不是通过字符串连接,而是希望您的服务器能够理解您传递的数据。 正确的方法是通过参数化查询,如下所示。

Dim amount as Decimal

if decimal.TryParse(txtbx_EBamount.Text, amount) Then

   Query = "INSERT INTO tbl_bills(payee_id,DueDate,Amount,account_id) 
            values (@identer,@duedate,@amountm @idaccount)"
   Dim cmd As MySqlCommand = new MySqlCommand(Query, connection)
   cmd.Parameters.Add("@identer", MySqlDbType.Int32).Value = payee_ID_EnterBills
   cmd.Parameters.Add("@duedate", MySqlDbType.Date).Value = cmbbx_EBdueDate.Value
   cmd.Parameters.Add("@amountm", MySqlDbType.Decimal).Value = amount
   cmd.Parameters.Add("@idaccount", MySqlDbType.Int32).Value = account_ID_EnterBills
   cmd.ExecuteNonQuery()
else
   ' Message for invalid input in txtbx_EBamount
End If

请注意,通过这种方式,您可以在查询文本中为每个占位符创建参数,这些参数将精确指定数据类型。 当然,您需要将参数的Value属性设置为预期数据类型的变量。 所以,例如,我不知道你的cmbbx_EBdueDate.Value是否包含日期或字符串。 在后一种情况下,您应该将该字符串转换为日期并将该日期设置为值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM