2013-12-23 109 views
0

我正在嘗試編寫一個insert語句,其中的作業是將用戶選擇的選定項目插入到其配置文件中。寫入sql和插入語句的問題

我正在使用Profile提供程序。

我在UserProfile表中有一個新列(用於存儲用戶名,年齡等信息),我稱它爲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'聲明是無效的:你沒有指定插入值(一個'INSERT'語句的'VALUES'部分)。 – 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(); 
    } 
} 

的OLE DB .NET提供程序不支持命名參數當CommandType設置爲文本參數傳遞到由一個OleDbCommand調用的SQL語句或存儲過程。在這種情況下,必須使用問號(?)佔位符。

來源:msdn

+0

當我嘗試這個我得到這個錯誤,在SQL語句結束時丟失分號(;)。 – Beep

+0

我編輯了代碼。 – dovid

+0

仍然收到錯誤{「在SQL語句末尾丟失分號(;)」} – Beep