2016-04-12 1 views
1

私のデータベースから情報を選択して情報を取得することはできますが、データベースを更新するために同じ情報を使用できないのはなぜですか? Commandstringは私がSQL文を書くのに使うものです。ASP.netでのaccdbデータベースの選択と更新

動作しない:

DatabaseConnection.Commandstring = ("UPDATE tbl_login SET Time='"+Settings.UpdateRecord+"' WHERE Username='"+Settings.LoginName+"' "); 

接続コード:

public static string ConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + System.Web.HttpContext.Current.Server.MapPath("MainData.accdb") + "'; Persist Security Info = False;"; 
    public static string Commandstring; 
    public static object result; 

    public static void Connect() { 
     using (OleDbConnection con = new OleDbConnection(DatabaseConnection.ConString)) { 
      con.Open(); 
      Debug.WriteLine("Connection to DB Established"); 

      using (OleDbCommand cmd = new OleDbCommand(Commandstring, con)) { 
       try { 
        cmd.ExecuteNonQuery(); 

        con.Close(); 
        Debug.WriteLine("Connection to DB Terminated"); 
       } 
       catch (Exception ex) { 
        Debug.WriteLine("Error Updating Database: " +ex.Message); 
        con.Close(); 
       } 
      } 
     } 
    } 
} 

を私の例外メッセージは、私のUPDATE文の構文エラーがあると言っています。 デバッグWriteLineメソッドに文を送る私が取得:

UPDATE tbl_login SET Time='21' WHERE Username='Bob' 
+1

「時間」は[予約語](http://allenbrowne.com/AppIssueBadWord.html#T)です。 'UPDATE tbl_login SET [Time] = '21' WHERE Username = 'Bob'' – HansUp

+0

本当にありがとうございました! – BPW

答えて

1

Timereserved wordです。

UPDATE tbl_login SET [Time]='21' WHERE Username='Bob' 

また、パラメータクエリに切り替える必要があると思います。次のように角かっこで囲みます。しかし、予約語の問題はあなたの直面する問題の原因であり、パラメータクエリの問題にもなります。

+0

ありがとうございます。私は、SQLインジェクション攻撃のために自分のコードが公開されていると聞いていましたが、後でこれを調べるつもりでした。 – BPW

関連する問題