2017-01-23 137 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