2015-02-17 2 views
0

Я пытаюсь обновить строки, но это проблема, потому что компилятор говорит: «Оператор не существует, символ меняется». Кто-нибудь знает почему?Оператор @ не существует ошибка

p.sql = new NpgsqlCommand("UPDATE users SET us_middlename = @us_middlename, us_country_home = @us_country_home, us_city_home = @us_city_home, us_type = @us_type, us_org_id = @us_org_id, us_institution_id = @us_institution_id WHERE us_id ='" + id1 + "';", npgSqlConnection); 

p.npgSqlCommand1.Parameters.AddWithValue("@us_middlename", user_par.us_middlename); //have character varying value 
          p.npgSqlCommand1.Parameters.AddWithValue("@us_country_home", user_par.us_country_home); //have int value 
          p.npgSqlCommand1.Parameters.AddWithValue("@us_city_home", user_par.us_city_home); //have int value 
p.npgSqlCommand1.Parameters.AddWithValue("@us_type", user_par.us_type);//have int value 
p.npgSqlCommand1.Parameters.AddWithValue("@us_org_id", user_par.us_org_id);//have int value 
          p.npgSqlCommand1.Parameters.AddWithValue("@us_institution_id", user_par.us_institution_id);//have int value 
count = p.sql.ExecuteNonQuery();   

ответ

0

Похоже на Npgsql вам нужно использовать : символы для имен параметров в запросе:

p.sql = new NpgsqlCommand(
    "UPDATE users " + 
    "SET " + 
     "us_middlename = :us_middlename, " + 
     "us_country_home = :us_country_home, " + 
     "us_city_home = :us_city_home, " + 
     "us_type = :us_type, " + 
     "us_org_id = :us_org_id, " + 
     "us_institution_id = :us_institution_id " + 
    "WHERE us_id ='" + id1 + "';", 
    npgSqlConnection 
); 

для параметров, вы не должны добавить : (я видел примеры как с т подол и без них, поэтому постарайтесь как если вы можете.)

p.npgSqlCommand1.Parameters.AddWithValue("us_middlename", user_par.us_middlename); //have character varying value 
p.npgSqlCommand1.Parameters.AddWithValue("us_country_home", user_par.us_country_home); //have int value 
p.npgSqlCommand1.Parameters.AddWithValue("us_city_home", user_par.us_city_home); //have int value 
p.npgSqlCommand1.Parameters.AddWithValue("us_type", user_par.us_type);//have int value 
p.npgSqlCommand1.Parameters.AddWithValue("us_org_id", user_par.us_org_id);//have int value 
p.npgSqlCommand1.Parameters.AddWithValue("us_institution_id", user_par.us_institution_id);//have int value 
count = p.sql.ExecuteNonQuery(); 

Вы должны также использовать параметр для id1, но это другой вопрос.

+0

«id1» заполняется всегда «id1 = record1.FM (« 30 »); , И ваше предложение имеет синтаксическую ошибку «рядом», «» ... – Svetlana

+0

@ Светлана ok Я обновил, надеюсь, лучший ответ. К сожалению, я не могу проверить это. –

+0

Я пробовал, спасибо – Svetlana

0

Не добавлять точку с запятой после id1 также я предлагаю U, чтобы передать id1 через параметр

p.sql = new NpgsqlCommand("UPDATE users SET us_middlename = @us_middlename, us_country_home = @us_country_home, us_city_home = @us_city_home, us_type = @us_type, us_org_id = @us_org_id, us_institution_id = @us_institution_id WHERE us_id ='" + id1 +"'", npgSqlConnection); //Removed ; 
Смежные вопросы