2017-02-04 5 views
-2

最初に、USERの構文が正しくないというエラーが表示され、代わりに "[USER]"にする必要があります。今私はex: {"Invalid column name 'USER'."}を得る。私は何をすべきかわからない、それは私がどちらか一方の誤りか他のものを得たようだ。あなたが書くとして文字列が無効な列名C#SQL文

private void btnEDIT_Click(object sender, EventArgs e) 
{ 
    string _ID = lblUserID.Text; // THESE ARE TO COLLECT THE INFORMATION FROM THE TEXTBOXES IN WHICH YOU EDIT THE "USERS" 
    string _user = tbUser.Text.Trim(); 
    string _password = tbPassword.Text.Trim().ToLower(); 
    string _role = tbRole.Text.Trim(); 

    editDataGrid(_user, _password, _role); // THIS IS FOR UPDATING MY GRID AT THE SAME TIME 

    string str = "Update UserValidation SET [USER] = '" + _user + "', PASSWORD = '" + _password + "', ROLE = '" + _role + "' WHERE userID ='" + _ID + "'"; 
    clsDB.InsUpDel(str); // MY METHOD FOR EXECUTING SQL STATEMENTS 
} 
+5

おそらく無関係 - **あなたのコードはSQLインジェクション**に対して脆弱です。代わりにprepared statementsを使用してください。 – GurV

+5

@ GurV。 。 。おそらく無関係ではない。パスワードには、一重引用符や2つのハイフンを連続して入力するなど、さまざまな文字を入力することをお勧めします。 –

答えて

1

をあなたはあなたのクエリの範囲をチェックできるのパラメータを使用することをお勧めします。のように、UserValidationが接続文字列で使用している選択されたデータベースインスタンスにあることを確認してください。また、その列名がUserか、何らかのバリエーションでないことを確認してください。

+0

あなたは正しかった、今はとても愚かな気がする。常にシンプルなものです。 –

0

すべてのparamsと列が正しいか確認するために、通常のクエリを実行しよう、そしてあなたは確かuserIdをしている第三、あなたのフィールドでのparamを交換するのですか?

UPDATE UserValidation 
SET USER = 'xxxx', PASSWORD = 'xxxx', ROLE = 'xxxx' 
WHERE userID ='xxxx'; 

は、私が代わりに一緒にあなたのクエリを連結... 'pram1を' + + ... + 'paramNの' ..