c# - 错误:操作必须使用可更新查询
问题描述
我创建了一个程序,它将检查酒店并更新后端。我在连接和更改房间表上的用户 ID 时遇到问题。表格是:
用户:
UserID - PK, Auto Number
Username - Short Text
Password - Short Text
房间
RoomID - PK, Auto Number
Room_Number - Number
UserID - FK, Number
可更新查询
PARAMETERS parUsername Short, parRoom_Number Short;
UPDATE Rooms SET UserID = (SELECT UserID FROM Users WHERE Username = [parUsername])
WHERE Room_Number=[parRoom_Number];
C# 代码
表格1
MessageBox.Show("Login Successful");
Home home = new Home();
home.Show();
home.LabelText = this.txtUsername.Text;
主页表格
public string LabelText
{
get
{
return this.lblUsername.Text;
}
set
{
this.lblUsername.Text = value;
}
}
签入用户控件
Home home = new Home();
try
{
string ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "/Hotel.accdb";
using (var con = new OleDbConnection(ConnString))
{
con.Open();
using (var cmd = new OleDbCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Query2";
cmd.Parameters.Add("parUsername", home.LabelText);
cmd.Parameters.Add("parRoom_Number", lbRooms.SelectedItem);
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
解决方案
而不是使用子查询,试试这个
PARAMETERS parUsername Text ( 255 ), parRoom_Number Long;
UPDATE Rooms, Users SET Rooms.UserID = Users.UserID
WHERE Rooms.Room_Number = [parRoom_Number] AND Users.Username = [parUsername];
推荐阅读
- c# - C# 单元测试复杂的多线程数据库读取
- ethereum - web3 发送数据和令牌
- jquery - 如果(垂直)滚动条在另一个 div 中可见,则向 div 添加填充
- javascript - 如何使用 GET 方法向 URL 添加警报提示以从 URL 获取数据
- javascript - javascript - replace() 删除字符串中所有重复的字母
- serial-port - 如何在扭曲的串行控制线上生成事件
- traffic - 如何让firefox通过mitmproxy连接网页?
- javascript - PhpStorm:YUI Compressor JS 不适用于打字稿
- python - 如何在 Python 中使用 praw 将保存的 reddit 帖子列表抓取到 txt 文件
- python - 如何获取“src=...”的 url?