编写sql和insert语句的问题

时间:2013-12-23 18:44:28

标签: c# sql database insert user-profile

我正在尝试编写一个insert语句,其中的工作是获取用户选择的所选项目,然后将其插入到他们的个人资料中。

我正在使用个人资料提供程序。

我在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

一旦他们登录,他们可以选择租用dvds:

enter image description here

问题是我不认为我的查询会这样做,因为它不起作用。

1 个答案:

答案 0 :(得分:2)

  1. 而是@Render写问号。

  2. 您需要为用户条件添加第二个参数,然后进行设置。

  3. 这样:

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

    当CommandType设置为Text时,OLE DB .NET提供程序不支持将参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。在这种情况下,必须使用问号(?)占位符。

    来源:msdn