2017-01-23 136 views
0

我尝试使用下面的查询中插入一个级联转换组整数串在我的桌子上一个datetime现场使用。MySQL查询不插入值

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 

我敢肯定它与我如何使用这些字符:'' "" "," - :。我无法弄清楚如何。

+2

帮你一个忙 - 参数化你的SQL,你不需要日期和时间 –

+0

你有一个清晰的/一步一步的/一步一步阅读如何参数化在VB.NET的SQL? – oozmac

+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 |     AM_PM         | January,23 2017 10:35:40 | out           |    下午

末更新

最重要的是,你可以做很多的参数化越好,这看起来像这样的事情

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() 

参数设置将可以很容易使用日期和字符串

+0

我尝试使用你的更正,但它没有插入任何数据:( – oozmac

+0

@oozmac我的更正是正确的,如果你参数化你应该没有问题。 MySql,所以你需要检查mySql函数的正确用法,例如,我不知道这个'%Y-%m-%d%H:%i:%s''是否正确。有助于知道你得到的错误 –

+0

这是正确的..正如我所说的查询工作正常,因为没有'''“”:'这些东西 – oozmac