我正在尝试编写一个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();
}
}
我有这张桌子:
每个用户都有个人资料:
一旦他们登录,他们可以选择租用dvds:
问题是我不认为我的查询会这样做,因为它不起作用。
答案 0 :(得分:2)
而是@Render写问号。
您需要为用户条件添加第二个参数,然后进行设置。
这样:
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