无法获得如何更新数据库 ms-access 中选定行的算法

阿迪尔·阿利耶夫

酒店有一个程序。这是“到达”客人的代码:

 try
                {

                    string dtparrival = this.dateTimePicker4.Text.ToString();
                    string statusarrival = "Arrival";

                    string strSql = "SELECT * FROM guestreg WHERE g_status = '" + statusarrival + "' AND g_ad = '" + dtparrival + "'";


                    OleDbCommand cmd = new OleDbCommand(strSql, connection);
                    connection.Open();
                    cmd.CommandType = CommandType.Text;
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                    DataTable scores = new DataTable();
                    da.Fill(scores);
                    arrivaldgv.DataSource = scores;
                    /**************************************************************************/
                    this.arrivaldgv.Columns[0].Visible = false;
                    this.arrivaldgv.Columns["g_totalrate"].Visible = false;
                    this.arrivaldgv.Columns["u_added"].Visible = false;
                    this.arrivaldgv.Columns["u_timeadded"].Visible = false;
                    /**************************************************************************/
                    this.arrivaldgv.Columns["g_name"].HeaderText = "Name";  //1
                    this.arrivaldgv.Columns["g_surname"].HeaderText = "Surname"; //2
                    this.arrivaldgv.Columns["g_company"].HeaderText = "Company"; //3
                    this.arrivaldgv.Columns["g_ad"].HeaderText = "Arrival Day"; //4
                    this.arrivaldgv.Columns["g_dd"].HeaderText = "Departure Day"; //5
                    this.arrivaldgv.Columns["g_amountofdays"].HeaderText = "Amount of Days"; //6
                    this.arrivaldgv.Columns["g_na"].HeaderText = "Number of Adults"; //7
                    this.arrivaldgv.Columns["g_amountofdays"].HeaderText = "Amount of Days"; //8
                    this.arrivaldgv.Columns["g_room"].HeaderText = "Room Number"; //9
                    this.arrivaldgv.Columns["g_rate"].HeaderText = "Rate"; //10
                    this.arrivaldgv.Columns["g_totalrate"].HeaderText = "Total Rate"; //11
                    this.arrivaldgv.Columns["g_info"].HeaderText = "Information"; //12
                    this.arrivaldgv.Columns["u_added"].HeaderText = "User"; //13
                    this.arrivaldgv.Columns["u_timeadded"].HeaderText = "Time"; //14
                    this.arrivaldgv.Columns["g_status"].HeaderText = "Status"; //15
                    /**************************************************************************/
                    connection.Close();
                }
                catch
                {
                    MessageBox.Show("Please, try again.");
                }

我的应用程序中有 datagrid 视图(这是屏幕截图)Screenshot

有“入住”按钮,我想将数据库中“g_status”的值从“到达”更改为“内部”。问题在于搜索所选行的SQL 命令和算法这是代码,但它不起作用:(更新)

 private void checkinbtn_Click(object sender, EventArgs e)
    {
        int selectedrowindex = arrivaldgv.SelectedCells[0].RowIndex;
        DataGridViewRow selectedRow = arrivaldgv.Rows[selectedrowindex];
        string value = Convert.ToString(selectedRow.Cells["g_status"].Value);

        OleDbDataAdapter adapter;
        OleDbCommandBuilder cmdBuilder;
        string checkin = "In House";
        DataSet ds = new DataSet();
        string sql = "UPDATE guestreg SET g_status = '" + checkin + "'" + " where ID = '" + value + "';";
        Int32 i;
        try
        {
            connection.Open();
            adapter = new OleDbDataAdapter(sql, connection);
            cmdBuilder = new OleDbCommandBuilder(adapter);
            adapter.Fill(ds);

            for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
            {
                ds.Tables[0].Rows[i].ItemArray[2] = checkin;
            }

            adapter.Update(ds.Tables[0]);
            connection.Close();
            MessageBox.Show("Data updated ! ");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error:     " + ex);
        }
    }

这是数据库结构:截图

提前致谢。

凯尔帕特尔

是否有任何列包含数据的唯一 ID(数据库中的主键)?

如果是,您可以使用它:

int selectedrowindex = arrivaldgv.SelectedCells[0].RowIndex;
DataGridViewRow selectedRow = arrivaldgv.Rows[selectedrowindex];  
string value = Convert.ToString(selectedRow.Cells["corresponding column name"].Value);   //maybe the first invisible column?

string sql = "UPDATE guestreg SET g_status = '"+checkin+"'" + " where *name of primary key* = '" + value + "';";

此外,这是执行 sql 命令的一种更简单的方法:

private void checkinbtn_Click(object sender, EventArgs e)
{
    try
    {
        var cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "UPDATE guestreg SET g_status='In House' where *name of primary key*=@id";
        cmd.Parameters.AddWithValue("@id", value);
        cmd.Connection = connection;
        connection.Open();
        cmd.ExecuteNonQuery();
        {
            MessageBox.Show("Update Success!");
            connection.Close();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error:     " + ex);
    }
}

让我知道我是否误解了什么,或者语法是否有错误,因为我无法测试它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从DataGridView和MS-Access数据库中删除选定的行

来自分类Dev

MS Access数据库中的重复行

来自分类Dev

在MS Access中访问数据库时更新查询

来自分类Dev

从VB 2015更新MS Access数据库

来自分类Dev

MS Access数据库是/否更新不正确

来自分类Dev

无法同时打开多个ms Access 2013数据库

来自分类Dev

在C#中按日期从MS Access数据库中选择数据

来自分类Dev

如何使用update和sum()函数更新MS Access数据库表?

来自分类Dev

MS Access数据库错误

来自分类Dev

MS Access防止数据库锁定

来自分类Dev

MS Access数据库SQL查询

来自分类Dev

插入到ms Access数据库

来自分类Dev

MS Access 数据库监控查询

来自分类Dev

从ms-access数据库中选择具有链接表的列

来自分类Dev

从具有链接表的ms-access数据库中选择一列

来自分类Dev

如何使用VBA创建空白的MS Access数据库?

来自分类Dev

如何使用VBA创建空白的MS Access数据库?

来自分类Dev

如何模拟连接到MS Access数据库的方法

来自分类Dev

使用vb.net将MS Access行插入数据库

来自分类Dev

检查 ASP.NET C# 中的 MS Access 数据库是否返回任何行

来自分类Dev

如何从Oracle数据库查询外部MS Access数据库?

来自分类Dev

如何从Oracle数据库查询外部MS Access数据库?

来自分类Dev

更新 MS Access 查询?

来自分类Dev

在C#中将数据从dataGridView更新/编辑到ms Access数据库

来自分类Dev

无法将数据插入数据库ms-access vb

来自分类Dev

从MS ACCESS 2007数据库提取SSIS 2012数据

来自分类Dev

使用Python将数据插入MS Access数据库

来自分类Dev

VBA代码从Excel循环和更新MS Access数据库列

来自分类Dev

C#-独立更新具有相同ID的MS-Access数据库记录

Related 相关文章

热门标签

归档