当前位置: 首页 > 面试题库 >

SQL Server:UPDATE不使用C#更新数据库

翟京
2023-03-14
问题内容

我有一个上面带有Web表单的网页。该表单已预填充了SQL
Server数据库中的数据。用户可以进入并编辑任何字段,然后单击底部的“保存”按钮以更新数据库中的记录。由于某种原因,当我将表格预先填充数据时,update语句不会更新数据库中的记录。如果我删除了页面加载方法上预先填写表单的代码,则update语句将按预期工作。当我在页面加载方法中用数据预先填充表单时,update语句似乎正在使用记录中已有的相同数据(而不是用户输入的新信息)更新记录。我完全不知道如何解决此问题,因为表单必须预先加载数据,以便用户可以分别编辑表单。

有人可以指出我需要做的错误或更正吗?我碰到了众所周知的砖墙:(

在下面,您将找到页面加载方法和保存按钮click事件处理程序。

protected void Page_Load(object sender, EventArgs e)
{
    String projectID = Request.QueryString["jobID"];
    String reportID = Request.QueryString["reportID"];

    string selectStatement = "SELECT * FROM ahu_data WHERE unit_ID = " + reportID;
    string sqlConnectionString = "Removed for Security";

    using (SqlConnection connection1 = new SqlConnection(sqlConnectionString))
    {
        SqlCommand selectCommand = new SqlCommand(selectStatement, connection1);
        connection1.Open();

        using (SqlDataReader reader = selectCommand.ExecuteReader())
        {
            while (reader.Read())
            {
                UMTextBox.Text = reader["make"].ToString();
                UMOTextBox.Text = reader["model"].ToString();
                UTTextBox.Text = reader["type"].ToString();
                USITextBox.Text = reader["size"].ToString();
                USTextBox.Text = reader["serial"].ToString();
                UATextBox.Text = reader["arrangement"].ToString();
                UCTextBox.Text = reader["class"].ToString();
                UDTextBox.Text = reader["discharge"].ToString();
                UMSTextBox.Text = reader["make_sheave"].ToString();
                USDTextBox.Text = reader["sheave_diameter"].ToString();
                USBTextBox.Text = reader["sheave_bore"].ToString();
                UBNTextBox.Text = reader["belts"].ToString();
                UBSTextBox.Text = reader["belt_size"].ToString();
                UFNTextBox.Text = reader["filters"].ToString();
                UFSTextBox.Text = reader["filter_size"].ToString();
                TCFMDTextBox.Text = reader["unitTotalCFMDesign"].ToString();
                TCFMATextBox.Text = reader["unitTotalCFMActual"].ToString();
                RACFMDTextBox.Text = reader["unitReturnAirCFMDesign"].ToString();
                RACFMATextBox.Text = reader["unitReturnAirCFMActual"].ToString();
                OACFMDTextBox.Text = reader["unitOutsideAirCFMDesign"].ToString();
                OACFMATextBox.Text = reader["unitOutsideAirCFMActual"].ToString();
                EACFMDTextBox.Text = reader["unitExhaustAirCFMDesign"].ToString();
                EACFMATextBox.Text = reader["unitExhaustAirCFMActual"].ToString();
                FRPMDTextBox.Text = reader["unitFanRPMDesign"].ToString();
                FRPMATextBox.Text = reader["unitFanRPMActual"].ToString();
                MRPMDTextBox.Text = reader["unitMotorRPMDesign"].ToString();
                MRPMATextBox.Text = reader["unitMotorRPMActual"].ToString();
                MVDTextBox.Text = reader["unitMotorVoltsDesign"].ToString();
                MVATextBox.Text = reader["unitMotorVoltsActual"].ToString();
                MADTextBox.Text = reader["unitMotorAmpsDesign"].ToString();
                MAATextBox.Text = reader["unitMotorAmpsActual"].ToString();
                MMTextBox.Text = reader["motor_make"].ToString();
                MFTextBox.Text = reader["motor_frame"].ToString();
                MHPTextBox.Text = reader["motor_hp"].ToString();
                MRPMTextBox.Text = reader["motor_rpm"].ToString();
                MVTextBox.Text = reader["motor_volts"].ToString();
                MPHTextBox.Text = reader["motor_phasehz"].ToString();
                MFLATextBox.Text = reader["motor_fl_amps"].ToString();
                MSFTextBox.Text = reader["motor_sf"].ToString();
                MMSTextBox.Text = reader["motor_make_sheave"].ToString();
                MSDTextBox.Text = reader["motor_sheave_diameter"].ToString();
                MSBTextBox.Text = reader["motor_sheave_bore"].ToString();
                MODTextBox.Text = reader["motor_operating_diameter"].ToString();
                MSCDTextBox.Text = reader["motor_sheave_center_distance"].ToString();
                TSPDTextBox.Text = reader["motorTotalSPDesign"].ToString();
                TSPATextBox.Text = reader["motorTotalSPActual"].ToString();
                ESPDTextBox.Text = reader["motorEnteringSPDesign"].ToString();
                ESPATextBox.Text = reader["motorEnteringSPActual"].ToString();
                SSPDTextBox.Text = reader["motorSuctionSPDesign"].ToString();
                SSPATextBox.Text = reader["motorSuctionSPActual"].ToString();
                DSPDTextBox.Text = reader["motorDischargeSPDesign"].ToString();
                DSPATextBox.Text = reader["motorDischargeSPActual"].ToString();
                PCSPDTextBox.Text = reader["motorPreheatCoilSPDesign"].ToString();
                PCSPATextBox.Text = reader["motorPreheatCoilSPActual"].ToString();
                CCSPDTextBox.Text = reader["motorCoolingCoilSPDesign"].ToString();
                CCSPATextBox.Text = reader["motorCoolingCoilSPActual"].ToString();
                RCSPDTextBox.Text = reader["motorReheatCoilSPDesign"].ToString();
                RCSPATextBox.Text = reader["motorReheatCoilSPActual"].ToString();
                FSPDTextBox.Text = reader["motorFilterSPDesign"].ToString();
                FSPATextBox.Text = reader["motorFilterSPActual"].ToString();
                AFSPDTextBox.Text = reader["motorAfterFilterSPDesign"].ToString();
                AFSPATextBox.Text = reader["motorAfterFilterSPActual"].ToString();
                WSPDTextBox.Text = reader["motorWheelSPDesign"].ToString();
                WSPATextBox.Text = reader["motorWheelSPActual"].ToString();
                RemarksTextArea.Text = reader["remarks"].ToString();
            }
        }
        connection1.Close();
    }
}

这是保存按钮单击处理程序,用于更新数据库中的记录。

protected void SaveReportButton_Click(object sender, EventArgs e)
{
    String projectID = Request.QueryString["jobID"];
    String reportID = Request.QueryString["reportID"];
    string unitMake = UMTextBox.Text;
    string unitModel = UMOTextBox.Text;
    string unitType = UTTextBox.Text;
    string unitSize = USITextBox.Text;
    string unitSerial = USTextBox.Text;
    string unitArrangement = UATextBox.Text;
    string unitClass = UCTextBox.Text;
    string unitDischarge = UDTextBox.Text;
    string unitMS = UMSTextBox.Text;
    string unitSD = USDTextBox.Text;
    string unitSB = USBTextBox.Text;
    string unitBeltNumber = UBNTextBox.Text;
    string unitBeltSize = UBSTextBox.Text;
    string unitFilterNumber = UFNTextBox.Text;
    string unitFilterSize = UFSTextBox.Text;
    string unitTotalCFMDesign = TCFMDTextBox.Text;
    string unitTotalCFMActual = TCFMATextBox.Text;
    string unitReturnAirCFMDesign = RACFMDTextBox.Text;
    string unitReturnAirCFMActual = RACFMATextBox.Text;
    string unitOutsideAirCFMDesign = OACFMDTextBox.Text;
    string unitOutsideAirCFMActual = OACFMATextBox.Text;
    string unitExhaustAirCFMDesign = EACFMDTextBox.Text;
    string unitExhaustAirCFMActual = EACFMATextBox.Text;
    string unitFanRPMDesign = FRPMDTextBox.Text;
    string unitFanRPMActual = FRPMATextBox.Text;
    string unitMotorRPMDesign = MRPMDTextBox.Text;
    string unitMotorRPMActual = MRPMATextBox.Text;
    string unitMotorVoltsDesign = MVDTextBox.Text;
    string unitMotorVoltsActual = MVATextBox.Text;
    string unitMotorAmpsDesign = MADTextBox.Text;
    string unitMotorAmpsActual = MAATextBox.Text;
    string motorMake = MMTextBox.Text;
    string motorFrame = MFTextBox.Text;
    string motorHP = MHPTextBox.Text;
    string motorRPM = MRPMTextBox.Text;
    string motorVolts = MVTextBox.Text;
    string motorPhaseHz = MPHTextBox.Text;
    string motorFullLoadAmps = MFLATextBox.Text;
    string motorSF = MSFTextBox.Text;
    string motorMakeSheave = MMSTextBox.Text;
    string motorSheaveDiameter = MSDTextBox.Text;
    string motorSheaveBore = MSBTextBox.Text;
    string motorOperatingDiameter = MODTextBox.Text;
    string motorSheaveCDistance = MSCDTextBox.Text;
    string motorTotalSPDesign = TSPDTextBox.Text;
    string motorTotalSPActual = TSPATextBox.Text;
    string motorEnteringSPDesign = ESPDTextBox.Text;
    string motorEnteringSPActual = ESPATextBox.Text;
    string motorSuctionSPDesign = SSPDTextBox.Text;
    string motorSuctionSPActual = SSPATextBox.Text;
    string motorDischargeSPDesign = DSPDTextBox.Text;
    string motorDischargeSPActual = DSPATextBox.Text;
    string motorPreheatCoilSPDesign = PCSPDTextBox.Text;
    string motorPreheatCoilSPActual = PCSPATextBox.Text;
    string motorCoolingCoilSPDesign = CCSPDTextBox.Text;
    string motorCoolingCoilSPActual = CCSPATextBox.Text;
    string motorReheatCoilSPDesign = RCSPDTextBox.Text;
    string motorReheatCoilSPActual = RCSPATextBox.Text;
    string motorFilterSPDesign = FSPDTextBox.Text;
    string motorFilterSPActual = FSPATextBox.Text;
    string motorAfterFilterSPDesign = AFSPDTextBox.Text;
    string motorAfterFilterSPActual = AFSPATextBox.Text;
    string motorWheelSPDesign = WSPDTextBox.Text;
    string motorWheelSPActual = WSPATextBox.Text;
    string remarks = RemarksTextArea.Text;

    string updateStatement = @"UPDATE ahu_data SET make=@UNITMAKE, model=@UNITMODEL, type=@UNITTYPE, size=@UNITSIZE, serial=@UNITSERIAL, arrangement=@UNITARRANGEMENT, 
                             class=@UNITCLASS, discharge=@UNITDISCHARGE, make_sheave=@UNITMS, sheave_diameter=@UNITSD, sheave_bore=@UNITSB, 
                             belts=@UNITBELTNUMBER, belt_size=@UNITBELTSIZE, filters=@UNITFILTERNUMBER, filter_size=@UNITBELTSIZE, 
                             unitTotalCFMDesign=@UNITTOTALCFMDESIGN, unitTotalCFMActual=@UNITTOTALCFMACTUAL, unitReturnAirCFMDesign=@UNITRETURNAIRCFMDESIGN, 
                             unitReturnAirCFMActual=@UNITRETURNAIRCFMACTUAL, unitOutsideAirCFMDesign=@UNITOUTSIDEAIRCFMDESIGN, 
                             unitOutsideAirCFMActual=@UNITOUTSIDEAIRCFMACTUAL, unitExhaustAirCFMDesign=@UNITEXHAUSTAIRCFMDESIGN, 
                             unitExhaustAirCFMActual=@UNITEXHAUSTAIRCFMACTUAL, unitFanRPMDesign=@UNITFANRPMDESIGN, 
                             unitFanRPMActual=@UNITFANRPMACTUAL, unitMotorRPMDesign=@UNITMOTORRPMDESIGN, unitMotorRPMActual=@UNITMOTORRPMACTUAL, 
                             unitMotorVoltsDesign=@UNITMOTORVOLTSDESIGN, unitMotorVoltsActual=@UNITMOTORVOLTSACTUAL, unitMotorAmpsDesign=@UNITMOTORAMPSDESIGN, 
                             unitMotorAmpsActual=@UNITMOTORAMPSACTUAL, motor_make=@MOTORMAKE, motor_frame=@MOTORFRAME, motor_hp=@MOTORHP, 
                             motor_rpm=@MOTORRPM, motor_volts=@MOTORVOLTS, motor_phasehz=@MOTORPHASEHZ, motor_fl_amps=@MOTORFULLLOADAMPS, 
                             motor_sf=@MOTORSF, motor_make_sheave=@MOTORMAKESHEAVE, motor_sheave_diameter=@MOTORSHEAVEDIAMETER, 
                             motor_sheave_bore=@MOTORSHEAVEBORE, motor_operating_diameter=@MOTOROPERATINGDIAMETER, motor_sheave_center_distance=@MOTORSHEAVECDISTANCE, 
                             motorTotalSPDesign=@MOTORTOTALSPDESIGN, motorTotalSPActual=@MOTORTOTALSPACTUAL, motorEnteringSPDesign=@MOTORENTERINGSPDESIGN, 
                             motorEnteringSPActual=@MOTORENTERINGSPACTUAL, motorSuctionSPDesign=@MOTORSUCTIONSPDESIGN, motorSuctionSPActual=@MOTORSUCTIONSPACTUAL, 
                             motorDischargeSPDesign=@MOTORDISCHARGESPDESIGN, motorDischargeSPActual=@MOTORDISCHARGESPACTUAL, motorPreheatCoilSPDesign=@MOTORPREHEATCOILSPDESIGN, 
                             motorPreheatCoilSPActual=@MOTORPREHEATCOILSPACTUAL, motorCoolingCoilSPDesign=@MOTORCOOLINGCOILSPDESIGN, motorCoolingCoilSPActual=@MOTORCOOLINGCOILSPACTUAL, 
                             motorReheatCoilSPDesign=@MOTORREHEATCOILSPDESIGN, motorReheatCoilSPActual=@MOTORREHEATCOILSPACTUAL, motorFilterSPDesign=@MOTORFILTERSPDESIGN, 
                             motorFilterSPActual=@MOTORFILTERSPACTUAL, motorAfterFilterSPDesign=@MOTORAFTERFILTERSPDESIGN, motorAfterFilterSPActual=@MOTORAFTERFILTERSPACTUAL, 
                             motorWheelSPDesign=@MOTORWHEELSPDESIGN, motorWheelSPActual=@MOTORWHEELSPACTUAL, remarks=@REMARKS WHERE unit_ID = " + reportID;
    string sqlConnectionString = "Removed for Security";

    using (SqlConnection connection1 = new SqlConnection(sqlConnectionString))
    {
            connection1.Open();

            using (SqlCommand updateCommand = new SqlCommand(updateStatement, connection1))
            {
                    updateCommand.Parameters.AddWithValue("@UNITMAKE", unitMake);
                    updateCommand.Parameters.AddWithValue("@UNITMODEL", unitModel);
                    updateCommand.Parameters.AddWithValue("@UNITTYPE", unitType);
                    updateCommand.Parameters.AddWithValue("@UNITSIZE", unitSize);
                    updateCommand.Parameters.AddWithValue("@UNITSERIAL", unitSerial);
                    updateCommand.Parameters.AddWithValue("@UNITARRANGEMENT", unitArrangement);
                    updateCommand.Parameters.AddWithValue("@UNITCLASS", unitClass);
                    updateCommand.Parameters.AddWithValue("@UNITDISCHARGE", unitDischarge);
                    updateCommand.Parameters.AddWithValue("@UNITMS", unitMS);
                    updateCommand.Parameters.AddWithValue("@UNITSD", unitSD);
                    updateCommand.Parameters.AddWithValue("@UNITSB", unitSB);
                    updateCommand.Parameters.AddWithValue("@UNITBELTNUMBER", unitBeltNumber);
                    updateCommand.Parameters.AddWithValue("@UNITBELTSIZE", unitBeltSize);
                    updateCommand.Parameters.AddWithValue("@UNITFILTERNUMBER", unitFilterNumber);
                    updateCommand.Parameters.AddWithValue("@UNITFILTERSIZE", unitFilterSize);
                    updateCommand.Parameters.AddWithValue("@UNITTOTALCFMDESIGN", unitTotalCFMDesign);
                    updateCommand.Parameters.AddWithValue("@UNITTOTALCFMACTUAL", unitTotalCFMActual);
                    updateCommand.Parameters.AddWithValue("@UNITRETURNAIRCFMDESIGN", unitReturnAirCFMDesign);
                    updateCommand.Parameters.AddWithValue("@UNITRETURNAIRCFMACTUAL", unitReturnAirCFMActual);
                    updateCommand.Parameters.AddWithValue("@UNITOUTSIDEAIRCFMDESIGN", unitOutsideAirCFMDesign);
                    updateCommand.Parameters.AddWithValue("@UNITOUTSIDEAIRCFMACTUAL", unitOutsideAirCFMActual);
                    updateCommand.Parameters.AddWithValue("@UNITEXHAUSTAIRCFMDESIGN", unitExhaustAirCFMDesign);
                    updateCommand.Parameters.AddWithValue("@UNITEXHAUSTAIRCFMACTUAL", unitExhaustAirCFMActual);
                    updateCommand.Parameters.AddWithValue("@UNITFANRPMDESIGN", unitFanRPMDesign);
                    updateCommand.Parameters.AddWithValue("@UNITFANRPMACTUAL", unitFanRPMActual);
                    updateCommand.Parameters.AddWithValue("@UNITMOTORRPMDESIGN", unitMotorRPMDesign);
                    updateCommand.Parameters.AddWithValue("@UNITMOTORRPMACTUAL", unitMotorRPMActual);
                    updateCommand.Parameters.AddWithValue("@UNITMOTORVOLTSDESIGN", unitMotorVoltsDesign);
                    updateCommand.Parameters.AddWithValue("@UNITMOTORVOLTSACTUAL", unitMotorVoltsActual);
                    updateCommand.Parameters.AddWithValue("@UNITMOTORAMPSDESIGN", unitMotorAmpsDesign);
                    updateCommand.Parameters.AddWithValue("@UNITMOTORAMPSACTUAL", unitMotorAmpsActual);
                    updateCommand.Parameters.AddWithValue("@MOTORMAKE", motorMake);
                    updateCommand.Parameters.AddWithValue("@MOTORFRAME", motorFrame);
                    updateCommand.Parameters.AddWithValue("@MOTORHP", motorHP);
                    updateCommand.Parameters.AddWithValue("@MOTORRPM", motorRPM);
                    updateCommand.Parameters.AddWithValue("@MOTORVOLTS", motorVolts);
                    updateCommand.Parameters.AddWithValue("@MOTORPHASEHZ", motorPhaseHz);
                    updateCommand.Parameters.AddWithValue("@MOTORFULLLOADAMPS", motorFullLoadAmps);
                    updateCommand.Parameters.AddWithValue("@MOTORSF", motorSF);
                    updateCommand.Parameters.AddWithValue("@MOTORMAKESHEAVE", motorMakeSheave);
                    updateCommand.Parameters.AddWithValue("@MOTORSHEAVEDIAMETER", motorSheaveDiameter);
                    updateCommand.Parameters.AddWithValue("@MOTORSHEAVEBORE", motorSheaveBore);
                    updateCommand.Parameters.AddWithValue("@MOTOROPERATINGDIAMETER", motorOperatingDiameter);
                    updateCommand.Parameters.AddWithValue("@MOTORSHEAVECDISTANCE", motorSheaveCDistance);
                    updateCommand.Parameters.AddWithValue("@MOTORTOTALSPDESIGN", motorTotalSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORTOTALSPACTUAL", motorTotalSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORENTERINGSPDESIGN", motorEnteringSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORENTERINGSPACTUAL", motorEnteringSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORSUCTIONSPDESIGN", motorSuctionSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORSUCTIONSPACTUAL", motorSuctionSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORDISCHARGESPDESIGN", motorDischargeSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORDISCHARGESPACTUAL", motorDischargeSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORPREHEATCOILSPDESIGN", motorPreheatCoilSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORPREHEATCOILSPACTUAL", motorPreheatCoilSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORCOOLINGCOILSPDESIGN", motorCoolingCoilSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORCOOLINGCOILSPACTUAL", motorCoolingCoilSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORREHEATCOILSPDESIGN", motorReheatCoilSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORREHEATCOILSPACTUAL", motorReheatCoilSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORFILTERSPDESIGN", motorFilterSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORFILTERSPACTUAL", motorFilterSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORAFTERFILTERSPDESIGN", motorAfterFilterSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORAFTERFILTERSPACTUAL", motorAfterFilterSPActual);
                    updateCommand.Parameters.AddWithValue("@MOTORWHEELSPDESIGN", motorWheelSPDesign);
                    updateCommand.Parameters.AddWithValue("@MOTORWHEELSPACTUAL", motorWheelSPActual);
                    updateCommand.Parameters.AddWithValue("@REMARKS", remarks);

                    updateCommand.ExecuteNonQuery();
            }

            connection1.Close();
        }
}

问题答案:

如果您无法防止ASP.NET页面生命周期Page_Load重新执行填充文本框的代码,则会导致这种情况。

if (!IsPostBack)
{
    string selectStatement = "SELECT * FROM ahu_data WHERE unit_ID = " + reportID;
    string sqlConnectionString = "Removed for Security";
    using (SqlConnection connection1 = new SqlConnection(sqlConnectionString))
    {
      .... rest of code that pre-fill your fields

Page.IsPostBack是Page的布尔属性,用于通知您的代码是第一次调用该页面还是由于某些需要在服务器端处理的事件而调用该页面。
在后一种情况下,您不应再次执行填充文本框的代码,否则,当流程到达您的按钮代码时,您将找到具有原始值而不是修改后的值的文本框,因为Page_Load重置了所有内容。

并且不要忘记上面关于参数化您的第一个查询的评论。您已经完成了参数化UPDATE的大部分工作,仅剩下一个参数即可完成。



 类似资料:
  • 我正在用一些初始数据绘制一个条形图,然后在单击按钮时尝试更新。我收到错误“未捕获的类型错误:无法读取未定义的属性'长度'”。单击更新后,将发生错误。如何解决此问题并启用更新功能以绘制新的条形图? D3代码:

  • 问题内容: 我正在使用()查找PostLikes表中的(PostId,UserId),如果找到该行,则用于生成delete指令并删除基础行,如果未找到该行,则用于生成insert命令并使用将该行插入表中。但是该行未插入数据库中的表中。这是我到目前为止所做的 和表 PostLikes(LikeId,PostId,UserId) 问题答案: 有几个问题: 您正在寻找重复使用相同的命令,这两个检测行是否

  • 出于某种原因,当这个JTable被调用时,它没有任何变化(这个方法在用户提交SQL查询后更新JTable)。 给定:验证数据向量和列名称向量是否正确填充。JTable 是一个私有类变量。 有什么想法吗?

  • 全部的 只是想看看用表单中提交的数据更新数据库行的最佳选项是什么。我理解Laravel更新查询生成器,但是我在如何获取表单数据,然后执行该查询方面遇到了困难。相对较新的Laravel:)这是我想出的,只是从我的PHP经验和逻辑: 我曾试图将查询放入一个函数中,然后让表单操作成为函数: 正如我所说,主要问题是试图让命名的表单对象成为更新行的对象。我有两个文本输入字段,分别命名为“body”和“not

  • 问题内容: 我在C#/ Visual Studio 2008中使用MySQL。我需要知道任何方法,以便如果一个用户更新数据库,则通过网络通知所有已登录用户已发生更改。如果我通过我的应用程序登录数据库,那时候数据库中最新记录的序列号是10,然后我有特权的人更新了数据库中的记录,同时我收到通知,数据库已更新为新记录。常见的例子可能是MSN Messenger的一个朋友上线时向他发出警报的提示……虽然我

  • 因此,我使用LiveData和ViewModel设置获取和插入数据的功能,并使用Room数据库保存数据。 将数据插入数据库后,我的RecyclerView不会更新数据。 RecyclerAdapterTransaksi.kt 使用RecyclerView显示数据库数据的片段 Pemasukkanframent。kt 使用LiveData的ViewModel类 TransaksiViewModel.