2012-05-12 28 views
0

SQL Serverデータベースを使用するC#デスクトップアプリケーションを実装しています。SQL Syntax Error Near ')'

私はこのコードを持っている:

SqlConnection cn = new SqlConnection(@"Data Source=PC;Initial Catalog=FRAT_DB;Integrated Security=True"); 
SqlCommand cmdSelect = new SqlCommand("select MAX(PhotoID) from Photo", cn); 
cn.Open(); 
SqlDataReader MaxID_Selector = cmdSelect.ExecuteReader(); 
double maxID = 0; 
while (MaxID_Selector.Read()) 
{ 
    if (MaxID_Selector[0].ToString().Trim() != "") 
    { 
     maxID = Convert.ToInt64(MaxID_Selector[0].ToString()); 
    } 
} 
maxID = maxID + 1; 
cn.Close(); 

SqlCommand cmdb = new SqlCommand(@"IF EXISTS(SELECT * FROM Person WHERE PersonID = @personID) BEGIN UPDATE Person SET PersonID = @PersonID, Name= @Name, Age= @Age,[email protected]_Group, Email= @Email END ELSE BEGIN INSERT INTO Person(PersonID,Name,Age,P_Group,Email) values(@PersonID,@Name,@Age,@P_Group,@Email)", cn); 

cmdb.Parameters.AddWithValue("@PersonID", personID); 
cmdb.Parameters.AddWithValue("@Name", textBox1.Text); 
cmdb.Parameters.AddWithValue("@Age", textBox2.Text); 
cmdb.Parameters.AddWithValue("@P_Group", textBox6.Text); 
cmdb.Parameters.AddWithValue("@Email", textBox5.Text);` 

私はプログラムを実行し、情報を保存しようとすると、私はこのエラーメッセージを取得:Syntax Error Near ')'

任意のソリューションを?

+0

を使用すると、SQLクエリでエラーが出るのですか? – om471987

+1

コマンドで実行しているテキストをコピーし、Management Studioで実行して、TSQLの問題をC#の問題から分離してください。 –

答えて

8

挿入後に「終了」が見つからないようです。これはテストされていないですが、以下試してください。

SqlCommand cmdb = new SqlCommand(@"IF EXISTS(SELECT * FROM Person WHERE PersonID = @personID) 
             BEGIN 
              UPDATE Person SET PersonID = @PersonID, Name= @Name, Age= @Age,[email protected]_Group, Email= @Email 
             END 
            ELSE 
             BEGIN 
              INSERT INTO Person(PersonID,Name,Age,P_Group,Email) values(@PersonID,@Name,@Age,@P_Group,@Email) 
             END ", cn 
           ); 
+1

良いキャッチ..... – om471987

+0

ありがとう! – toti

1

をあなたが挿入した後、「終了」を逃し、2番目の挿入文で、以下試してください。

SqlCommand cmdb = new SqlCommand(@"IF EXISTS(SELECT * FROM Person WHERE PersonID = @personID) BEGIN UPDATE Person SET PersonID = @PersonID, Name= @Name, Age= @Age,[email protected]_Group, Email= @Email END ELSE BEGIN INSERT INTO Person(PersonID,Name,Age,P_Group,Email) values(@PersonID,@Name,@Age,@P_Group,@Email) END ", cn);