2012-02-03 24 views
2

私は使用している可能性のある予約語からエラーが発生している可能性がありますが、どの単語がわからないと思います。前回私がこの問題を抱えていたのはINSERT INTOステートメントであり、予約語のまわりに大括弧を入れて修正しました。しかし、それが予約語の問題であれば。コードがこのようなときに、どのようにして予約語のまわりに括弧を入れることができますか?どんな助け?UPDATE文の構文エラー

 OleDbCommandBuilder cb; 
     cb = new OleDbCommandBuilder(clientAD); 

     DataRow dRow = clientDS.Tables["Client"].Rows[cInc]; 

     bool thingy = false; 
     int defaultInt = 0; 
     byte defualtByte = 0; 
     double defualtDouble = 0.0; 

     #region dRow items 
     dRow["ID"] = textBox3.Text; 
     dRow["ID_Type"] = ""; 
     dRow["LastName"] = textBox1.Text; 
     dRow["FrstName"] = ""; 
     dRow["MI"] = ""; 
     dRow["MassMail"] = thingy; //Bool 
     dRow["BusName"] = ""; 
     dRow["Bus"] = thingy; //Bool 
     dRow["Title"] = ""; 
     dRow["Title2"] = ""; 
     dRow["Sex"] = ""; 
     dRow["Cli_DOB"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["Spo_DOB"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["Salute"] = ""; 
     dRow["Salute2"] = ""; 
     dRow["Spouse"] = ""; 
     dRow["SSAN"] = ""; 
     dRow["Review"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["Occup"] = ""; 
     dRow["AgentNo"] = defaultInt; //Int32 
     dRow["Status"] = ""; 
     dRow["Wedding_DT"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["Flag_1"] = ""; 
     dRow["Flag_2"] = ""; 
     dRow["Flag_3"] = ""; 
     dRow["Flag_4"] = ""; 
     dRow["Flag_5"] = ""; 
     dRow["Flag_6"] = ""; 
     dRow["Flag_7"] = ""; 
     dRow["Flag_8"] = ""; 
     dRow["Flag_9"] = ""; 
     dRow["Flag_10"] = ""; 
     dRow["Group"] = thingy; //Bool 
     dRow["GroupMember"] = thingy; //Bool 
     dRow["KeyWords"] = ""; 
     dRow["Smoker"] = ""; 
     dRow["Married"] = ""; 
     dRow["NumChild"] = defaultInt; //Int32 
     dRow["NetAsset"] = defaultInt; //Int32 
     dRow["Income"] = defualtByte; //Byte 
     dRow["LstUpdate"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["AutoSal"] = ""; 
     dRow["CIP_ID"] = defaultInt; //Int32 
     dRow["EmailAddr_1"] = ""; 
     dRow["EmailAddr_2"] = ""; 
     dRow["UD1"] = ""; 
     dRow["UD2"] = ""; 
     dRow["UD3"] = ""; 
     dRow["UD4"] = ""; 
     dRow["UD5"] = ""; 
     dRow["UD6"] = ""; 
     dRow["UD7"] = ""; 
     dRow["UD8"] = ""; 
     dRow["UD9"] = ""; 
     dRow["UD10"] = ""; 
     dRow["UD11"] = ""; 
     dRow["UD12"] = ""; 
     dRow["UD13"] = ""; 
     dRow["UD14"] = ""; 
     dRow["UD15"] = defualtDouble; //Double 
     dRow["UD16"] = defualtDouble; //Double 
     dRow["UD17"] = defualtDouble; //Double 
     dRow["UD18"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["UD19"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["UD20"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["New"] = thingy; //Bool 
     dRow["TDate"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["TTime"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["ImportID"] = defaultInt; //Int32 
     dRow["SalespTxt"] = ""; 
     dRow["Notepad"] = ""; 
     dRow["ANote"] = ""; 
     dRow["expCount"] = defaultInt; //Int32 
     dRow["PNote"] = ""; 
     dRow["DrLic_Issue"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["DrLic_Exp"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["DrLic_state"] = ""; 
     dRow["CoDrLic_State"] = ""; 
     dRow["CoDrLic_Issue"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["CoDrLic_Exp"] = DateTime.Now.ToShortDateString(); //Date/Time 
     dRow["Void_check"] = ""; 
     dRow["ASER"] = ""; 
     dRow["Anniversery"] = ""; 
     dRow["Client_Note"] = ""; 
     dRow["C o_Citizenship"] = ""; 
     dRow["Attachment"] = ""; 
     dRow["Pass_Notes"] = ""; 
     dRow["Other_Notes"] = ""; 
     dRow["CE_Notes"] = ""; 
     dRow["Comp_Notes"] = ""; 
     #endregion 

     clientAD.Update(clientDS, "Client"); 

私はデフォルト値を行に入れており、データ型が一致していることを確認しました。もともとはフィールド名を含んでいませんでしたが、代わりにフィールドインデックスを初めて使用しました。

+0

エラーコードを投稿できますか? – czuroski

+0

このコードを実行するときに発生した正確なエラーは何ですか? – Akhil

+0

'cb.GetUpdateCommand()。CommandText'を見てみましょうか? – Blorgbeard

答えて

1

dRow ["C o_Citizenship"]はCとoの間にスペースを入れますか?

+0

はい、データベース作成時にタイプミスでした。 – user1161086

0

私は(ウォッチデバッグウィンドウでのtry/catchでラップし、その、具体的

try 
{ 
    clientAD.Update(clientDS, "Client"); 
} 
catch(Exception oError) 
{ 
    MessageBox.Show(oError.Message); 
} 

に窒息ものを見ていますが、実際のメッセージボックスにブレークポイントを置けば、全体のoErrorオブジェクトになりますまたはローカル変数のデバッグウィンドウ)、より詳細な情報が表示される可能性があります。私たちが知っている限り、特に、読み取り専用で、手で触れることができない自動インクリメント列を持つテーブルで「更新」を発行しようとしている可能性があります。 IDを設定しようとすると、変更された値を考慮して強制的に実行しようとしている可能性があります。

また、OleDbDataAdapterのインスタンスである "clientAD"も参照してください。基礎となる主キーである「列」を指定する必要があるかもしれません。

+0

私はあなたにこれに戻ってくるのがとても辛かったです。私は休暇中にいました。しかし、あなたが言ったようにtry/catchを追加しました。「UPDATE文の構文エラー」というメッセージが表示されます。そして、はい、私のテーブルには自動増分カラムがあります。最初の列IDは自動です。 – user1161086

+0

@ user1161086、OleDbDataAdapter(clientAD)の "Update"コマンドを振り返ります。 updateコマンドは、UPDATE COLUMNという自動インクリメント列をそのWHERE句だけに含めるべきではありません。コマンドが生成されたのか、それとも構築したのか...自動インクルード列を更新することはできません。また、意図的に読み取り専用でデータベースに割り当てられているため、挿入することもできません。 – DRapp

+0

私のためにコマンドが生成されています。しかし、私はMessageBox.Show(cb.GetUpdateCommand()。CommandText.ToString())を追加して、生成されたコマンドを確認しました。 IDは既にWHERE句にしかないようです。しかし、すべての値は "=?"です。そしてwhere節でも同じです。もし私が自分でこの声明を作成するのであれば、それを行う簡単な方法がありますか?ご覧のとおり、私は多くの分野を更新しています。 – user1161086

関連する問題