【问题标题】:problems writing sql and insert statement [duplicate]编写sql和insert语句的问题[重复]
【发布时间】:2013-12-23 18:44:28
【问题描述】:

我正在尝试编写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();
    }
}

我有这张桌子:

每个用户都有一个个人资料:

登录后,他们可以选择租借 DVD:

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

【问题讨论】:

  • 您的INSERT 语句无效:您没有指定要插入的值(INSERT 语句的VALUES 部分)。
  • 在哪里插入或在哪里更新?
  • 我已经更新了问题
  • 这不是重复的,因为另一个问的是不同的问题,我问的是我写语句的方式是否正确。

标签: c# sql database insert user-profile


【解决方案1】:
  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();
    }
}

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

来源:msdn

【讨论】:

  • 当我尝试这个时,我得到了这个错误,在 SQL 语句末尾缺少分号 (;)。
  • 仍然收到错误{“SQL 语句末尾缺少分号 (;)。”}
  • 在 ExecuteNonQuery 行中放置一个断点并进行调试。当应用程序停止时,将其放在即时窗口中:? da.InsertCommand.CommandText。结果如何?
  • 我可以运行断点,但应用停止时是什么意思
猜你喜欢
  • 1970-01-01
  • 2012-10-18
  • 2012-11-22
  • 1970-01-01
  • 2020-06-27
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
相关资源
最近更新 更多