2017-08-31 17 views
1

から日付/時刻を変換すると、これを変換する他の方法を見つけるように見えることはできませんときに失敗しました出席のSQL Serverの管理の時間にまたはタイムアウト(備考)変換は、文字列vb.net

コードです:

create table Attendance 
(
EmpID varchar(25) foreign key references Employee(EmpID), 
remarks varchar (25) primary key not null, 
checkdate date, 
tin time, 
tout time, 
) 
+2

避けなければなら卸です。 [Bobby Tables:SQLインジェクションを防ぐためのガイド](http://bobby-tables.com/) - そして 'null'は文字列ではないので、' null'の周りに一重引用符を使用しないでください。 'ヌル'。 – SqlZim

+0

あなたは直面している問題は何ですか?エラーメッセージとは何ですか? –

+0

あなたの問題はここにあります:Date.Today& "'、'"&TimeOfDayはdatetime imを作成する必要がありますか?これをあなたのテーブルの日付に設定しています。もしあなたがdatetimeを作成しているのであれば、Date.Today& "''"&TimeOfDay - そしてあなたのテーブル作成はcheckdate datetimeを読むべきです。 – jimmy8ball

答えて

1

それはterribですデータベースクエリを作成/実行するための方法です。基本的には、SQL文字列がアセンブルされているときに日付の値がビジュアルベーシックで文字列表現に変換されていますが、sql-serverは生成された文字列を日付に戻すことができません。

幸いにも、非常に少なくとも、パラメータ化クエリには、いくつかのチュートリアルをご覧ください

Dim sqlC as New SqlCommand("INSERT INTO attendance VALUES(@emp, @rem, @dat, @tin, null)", myConnectionStringVariable) 
sqlC.Parameters.AddWithValue("emp", Label1.Text) 
sqlC.Parameters.AddWithValue("rem", Button1.Text) 
sqlC.Parameters.AddWithValue("dat", Date.Today) 
sqlC.Parameters.AddWithValue("tin", DateTime.Now) 

を:する必要があり、それはそれはより次のようになります

する必要がないように、あなたは、特にあなたのクエリを記述する必要があります。いくつかのUIコンポーネントからSQLに含める値がSQLコマンド文字列に連結された文字列である場合は、SQLをもう一度書き直してください。

さらに、ボタンクリックイベントハンドラ、およびORMライブラリ(データセット、エンティティフレームワーク、NHibernateのなど)

あなたのコードを使用するようにされており、大規模なセキュリティ上のリスクであり、あなたがパラメータ化クエリを使用しなければならないパターンが完全に

+0

コメントありがとうございます。私は多くのことを学びました。 –