как выполнить SQL с условием if в c # - PullRequest
0 голосов
/ 11 октября 2011

как выполнить SQL с условием if в c #?

Это мой запрос, и я выполнил его. Я получаю сообщение об ошибке «Неверный оператор SQL; ожидается« DELETE »,« INSERT »,« PROCEDURE »,« SELECT »или« UPDATE ». Я использую MS ACCESS в качестве серверной части

     mycon.ConnectionString = ConnString;
            mycon.Open();

            string mySelectQuery = "IF (EXISTS (SELECT * FROM Employee AS t1 WHERE t1.ssn ='"+textBox4.Text+"' "+
                                    "))begin UPDATE Employee  SET "+
                                    "fname ='"+textBox1.Text+"' ,"+
                                    "minit ='"+textBox2.Text+"' ," +
                                    "lname ='" + textBox3.Text+"', " +
                                    "ssn ='" +textBox4.Text+"', " + 
                                    "bdate ='" +textBox5.Text+"', " +
                                    "address ='" +textBox6.Text+"', " +
                                    "sex ='" +textBox7.Text+ "', " +
                                    "salary ='" +textBox8.Text+"', " +
                                    "superssn ='" +textBox9.Text+"', " +
                                    "dno ='" +comboBox2.Text+"'" +
                                   " WHERE ssn = '"+textBox4.Text+"' "+
                                    "end "+
                                    "else "+
                                   " begin "+
                                   " INSERT INTO employee  values ('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"','"+textBox7.Text+"','"+textBox8.Text+"','"+textBox9.Text+"','"+comboBox2.Text+"')"+
                                    " end";

            OleDbCommand myCommand = new OleDbCommand(mySelectQuery, mycon);

           int Success=  myCommand.ExecuteNonQuery();

Ответы [ 2 ]

1 голос
/ 11 октября 2011

MS Access не поддерживает оператор IF.Ни else, ни begin.Вам придется сделать это в своем коде C #, например, сначала выполнить запрос "SELECT * FROM Employee AS t1 WHERE t1.ssn ='"+textBox4.Text + "'";, а затем выполнить следующий, если есть результаты.

Кроме того, вы должны либо использовать параметризованные запросы, либо избежатьзначения ваших текстовых полей.

0 голосов
/ 11 октября 2011

Похоже, что вы хотите, чтобы это UPDATE запись, если она Exists в базе данных, иначе INSERT запись.

Вы не можете сделать это в одном запросе, поэтому подготовьте запрос для поиска в базе данных, если запись существует, затем используйте вывод (isExists или нет) для UPDATE или INSERT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...