小弟现在我写了一个东东,遇到了些问题。就是对数据库更新。
我用的Access。在数据库里有一个表叫学生基本信息。这个表里的学号是主建。
我写的更新代码如下:
OleDbConnection thisConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\学生管理.mdb");
                    OleDbDataAdapter thisAdapter = new OleDbDataAdapter("select * from 学生基本信息",thisConnection);
                    OleDbCommandBuilder thisBuilder = new OleDbCommandBuilder(thisAdapter);
                    DataSet thisDataSet = new DataSet();
                    thisAdapter.Fill(thisDataSet,"学生基本信息");
                    thisDataSet.Tables["学生基本信息"].Rows[0]["姓名"] = txtBoxStuName.Text;
                    thisAdapter.Update(thisDataSet,"学生基本信息");
在这里:thisDataSet.Tables["学生基本信息"].Rows[0]["姓名"] = txtBoxStuName.Text;这行我需要更改,但确实不知道怎么找出学号那行索引了。
请各位帮帮忙~小弟谢谢了!或者告诉我"update 学生基本信息 set ... ... ... ... where 学号=txtStudentNumber.txt"应该写哪里

解决方案 »

  1.   

    同理
     OleDbDataAdapter thisAdapter = new OleDbDataAdapter("select * from 学生基本信息",thisConnection);写在上面就可以了
      

  2.   

    关键是我是通过学号来更改的,我觉得应该用上updata 这个SQL语句
    可是这个我不知道应该怎么加,加在哪,但是要用thisDataSet.Tables["学生基本信息"].Rows[0]["姓名"] = txtBoxStuName.Text这个方法的话Rows里的索引我又不知道怎么找,当然,这个索引也是通过学号来找在表中的索引
      

  3.   

    public static Boolean UpdateMember(Member member)
    {
              OleDbConnection thisConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\学生管理.mdb");
    string sqlstr=""; 
    OleDbConnection thisConnection = getConn(); 
    thisConnection.Open();
             OleDbCommand myCommand = new OleDbCommand("select * from 学生基本信息 where 学号=XXX",thisConnection);
             myCommand.ExecuteNonQuery(); 
    thisConnection.Close();}
      

  4.   

    呵呵,这个
              OleDbConnection thisConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\学生管理.mdb");
    string sqlstr=""; 
    OleDbConnection thisConnection = getConn(); 
    thisConnection.Open();
             OleDbCommand myCommand = new OleDbCommand("select * from 学生基本信息 where 学号=XXX",thisConnection);
             myCommand.ExecuteNonQuery(); 
    thisConnection.Close();
      

  5.   

    三种方法:
    1.  在SQL语句中过滤 OleDbDataAdapter thisAdapter = new OleDbDataAdapter("select * from 学生基本信息 where 学号='你要查的学号'",thisConnection);
    然后可以直接用 thisDataSet.Tables["学生基本信息"].Rows[0]["姓名"] = txtBoxStuName.Text;找到记录并把txtBoxStuName.Text值写进去
    2.thisDataSet.select("学号='" + 输入你要找的学号 + "'")
    3.自己写循环把你需要符合的学号的记录找到
      

  6.   

    果然成了!谢谢你的3种方法
    可是小弟我还有个地方不明白
    你的第一种方法,虽然按照学号索引了,但为什么接用 thisDataSet.Tables["学生基本信息"].Rows[0]["姓名"] = txtBoxStuName.Text;就OK了?
    这个Rows后面不是跟的是要找的行的索引吗?
    这都是c#自动的?
      

  7.   

    chees() 和jimxin1984() 都帮我解决了问题~这样吧,我各给10分好不?非常感谢你们!!你们俩还差十分,我后天发个帖子,再给你们十分
    你们一定接帖来啊
      

  8.   

    chees() 和jimxin1984() 能不能给我讲讲
    虽然按照学号索引了,但为什么接用 thisDataSet.Tables["学生基本信息"].Rows[0]["姓名"] = txtBoxStuName.Text;就OK了?
    这个Rows后面不是跟的是要找的行的索引吗?
    这都是c#自动的?
      

  9.   

    呵呵,给我一点分,我告诉你。
    OleDbDataAdapter thisAdapter = new OleDbDataAdapter("select * from 学生基本信息 where 学号='你要查的学号'",thisConnection);
    这里就已经过滤thisDataSet只有符合条件的一条记录了,所以后面可以直接用
    thisDataSet.Tables["学生基本信息"].Rows[0]["姓名"] = txtBoxStuName.Text;就OK了
      

  10.   

    不过我建议你用第2种方法,具体用法如下:
    ds.Tables[0].Select("学号='" + 你要找的学号 + "'")[0]["姓名"]=txtBoxStuName.Text;
    这种方法简便。