已在DGV上成功更新,但未在数据库上更新

时间:2014-09-15 04:11:05

标签: c# database ms-access oledb

private void btnUpdate_Click(object sender, EventArgs e)
{
    OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ALNETTE\Desktop\New folder\AccessDatabase.accdb");

    string Db = "Select * from StudentInfo";
    OleDbCommand cmd = new OleDbCommand(Db, con);

    try
    {
        con.Open();
        cmd.ExecuteNonQuery();
        MessageBox.Show("Update");
        con.Close();
    }
    catch (Exception)
    {
        MessageBox.Show("error");
    }
}

我有这个代码用于我的更新但是当我更新它时,它只更新datagridview而不是我的数据库。我该怎么做才能在数据库中更新它?

4 个答案:

答案 0 :(得分:1)

而不是使用StudentInfo中的Select *,您需要使用更新查询(" UPDATE TABLENAME SET COLUMN2 = Values1 WHERE COLUMN1 = Values")

例如:

   private void btnUpdate_Click(object sender, EventArgs e)
    {
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data   Source=C:\Users\ALNETTE\Desktop\New folder\AccessDatabase.accdb");
        string Db = "UPDATE StudentInfo SET StudentName='SomeoneName' WHERE StudentID=1";
        OleDbCommand cmd = new OleDbCommand(Db, con); 

        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
            MessageBox.Show("Update");
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("error"+ex.Message);
        }
    }

答案 1 :(得分:0)

您有一个SELECT sql语句,您需要一个INSERTUPDATE语句来向数据库添加或更新数据。

例如:

INSERT INTO StudentInfo VALUES ('John Doe', '555-1212');

UPDATE StudentInfo SET 
Name = 'Joe Bloggs', PhoneNumber = '555,1234'
WHERE ID = 1

答案 2 :(得分:0)

请改用查询。你正在选择更新。

更新语法是:

Update tablname 
set col1 = values, col2 = values... 
WHERE some_column = some_value;

答案 3 :(得分:0)

try
            {
                cBuild = new OleDbCommandBuilder(adapter);
                adapter.Update(dt);
            }
            catch (Exception)
            {
                MessageBox.Show("DO NOT DUPLICATE STUDENTID");
            }