2013-12-23 2 views
0

Я пытаюсь написать оператор insert, где задание - выбрать выбранный элемент, который пользователь выбрал, а затем вставить в свой профиль.проблемы с написанием sql и insert statement

Я пользуюсь поставщиком профилей.

В колонке есть новая колонка, в которой хранятся такие вещи, как имя пользователя, возраст и т. Д.), И я назвал его Rented.

например:

  • Пользователь Tom45
  • арендовали Pirates of The caribbean
  • возраст 23

Может кто-то дайте мне знать, если я делаю это правильно, поскольку я не могу показаться, чтобы получить его работать.

Мои вставки и SQL:

protected void Button3_Click(object sender, EventArgs e) 
{ 
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\ASPNetDB.mdb;Persist Security Info=True"); 
    { 
     da.InsertCommand = new OleDbCommand("INSERT INTO UserProfile (Rented) VALUES (@Rented) WHERE [UserName] = ?", conn); 
     string dvdrent = DG_Latest.SelectedRow.Cells[1].Text; 
     OleDbParameter rented = new OleDbParameter(); 
     { 
      da.InsertCommand.Parameters.AddWithValue("@Rented", DG_Latest.SelectedRow.Cells[2].Text); 
     } 
     conn.Open(); 

     da.InsertCommand.ExecuteNonQuery(); 

     conn.Close(); 
     conn.Dispose(); 
    } 
} 

У меня есть эта таблица:

enter image description here

И каждый пользователь имеет профиль:

enter image description here

После того, как они вошедшие в систему они могут выбрать аренду dvd s:

enter image description here

Проблема в том, я не думаю, что мой запрос делает это, так как он не работает.

+0

Ваш 'INSERT' заявление недействительно: вы не указываете значения для вставки (в' VALUES' часть в 'INSERT' заявление). – Dai

+0

Вставьте где или обновите где? – rach

+0

Я обновил вопрос – Beep

ответ

2
  1. вместо этого @Render написать знак вопроса.

  2. необходимо добавить второй параметр для критериев пользователя и установить его.

так:

protected void Button3_Click(object sender, EventArgs e) 
{ 
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\ASPNetDB.mdb;Persist Security Info=True"); 
    { 
     da.InsertCommand = new OleDbCommand("INSERT INTO UserProfile (Rented) VALUES (?) WHERE [UserName] = ? ;", conn); 

     da.InsertCommand.Parameters.AddWithValue("@Rented", DG_Latest.SelectedRow.Cells[2].Text); 
     da.InsertCommand.Parameters.AddWithValue("@User", XXXXXXXXX); 

     conn.Open(); 

     da.InsertCommand.ExecuteNonQuery(); 

     conn.Close(); 
     conn.Dispose(); 
    } 
} 

В .NET Поставщик OLE DB не поддерживает именованные параметры для передачи параметров в операторе SQL или хранимой процедуры, называемой помощью OleDbCommand когда CommandType установлен в текст , В этом случае необходимо использовать метку вопроса (?).

Источник: msdn

+0

Когда я пытаюсь это сделать, я получаю эту ошибку, пропуская точку с запятой (;) в конце инструкции SQL. – Beep

+0

Я редактировал код. – dovid

+0

По-прежнему возникает ошибка {«Отсутствует точка с запятой (;) в конце инструкции SQL».} – Beep