Mysql查询不插入值

时间:2017-01-23 03:55:38

标签: mysql vb.net

我正在尝试使用下面的查询将一组连接的转换整数插入到字符串中,以便在我的表中的datetime字段中使用。

Field        Type
empID        int(11)
time_stamp   datetime
in_out       char(3)
am_pm        char(2)

QUERY

Dim query As String = "INSERT INTO attendance VALUES(" & empID.Text & _
 "STR_TO_DATE(CONCAT("& empYear.Text & ",'-'," & empMonth.Text & ",'-'," & _
  empDay.Text & ",' '," & empHour.Text & ",':'," & empMin.Text & ",':'," & _
  empSec.Text & ",'%Y-%m-%d %H:%i:%s'),'out','pm')"

连接和值没有问题。我试图将值插入到字符串类型的test列中,输出为:

133201712311827

我非常确定如何使用这些字符:'' "" "," - :。我无法弄清楚如何。

1 个答案:

答案 0 :(得分:1)

我看到的第一个问题,这里

& empID.Text & "STR_TO_DATE(. . .  .

您在第一个值

后缺少逗号
& empID.Text & "***,*** STR_TO_DATE(. . . .

第二个问题,我确定何时用硬编码值替换了您的文本值 - 您缺少str_to_date的右括号。此处,'%Y-%m-%d...应为), '%Y-%m-%d...

STR_TO_DATE(CONCAT(1999,'-',01,'-',01,' ',10,':',25,':',30***)***,'%Y-%m-%d %H:%i:%s')

如您所见 - 我的替换表明您没有串联问题,单引号和:。这里只有其他变量是文本框中的数据质量。

<强>更新

这个答案(上面)是正确的。使用sql小提琴我创建了模式,当用硬编码替换文本框值时 - 全部工作。我添加逗号和括号的建议成立。您对单引号问题的主张是错误的。

create table xxx (empID int(11), time_stamp datetime, in_out char(3), am_pm  char(2));
INSERT INTO xxx VALUES(123,
    STR_TO_DATE(CONCAT('2017','-','1','-','23',' ','10',':','35',':','40'),'%Y-%m-%d %H:%i:%s'),
    'out','pm');

commit;
Select * from xxx
  

empID | time_stamp | in_out |上午下午   
123 | 2017年1月23日10:35:40 |出|下午

结束更新

最重要的是,你可以通过参数化做得更好,这看起来像这样

command.CommandText = "insert into ... values (@1, @2, @3, @4)"
command.Parameters.AddWithValue("@1", Convert.ToInt32(empID.Text))
dim date as new DateTime(Convert.ToInt32(empYear.Text), Convert.ToInt32(empMonth.Text), . . . . )
command.Parameters.AddWithValue("@2", date)
. . .  . . .
command.ExecuteNonQuery()

参数化可以轻松处理日期和字符串