2012-05-12 83 views
0

我正在實現一個使用SQL Server數據庫的C#桌面應用程序。SQL語法錯誤'''''

我有這樣的代碼:

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中運行它以從C#問題中分離出TSQL問題。 –

回答

8

看起來像是在插入後缺少「End」。這是未經測試,但嘗試如下:

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

你錯過了「結束」插入後,在第二個INSERT語句,請嘗試以下:

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);