int sessid;
            DataSet myDataSet;
            String sql = "SELECT * FROM Sessions WHERE session = '" + session + "' AND year = '" + year + "'";
            OleDbConnection oleConn = new OleDbConnection(DB.source);
            try
            {
                MessageBox.Show("1");
                OleDbDataAdapter adapter = new OleDbDataAdapter(sql, oleConn);
                MessageBox.Show("2");
                myDataSet = new DataSet();
                MessageBox.Show("3");
                adapter.Fill(myDataSet, "sessid");
                MessageBox.Show("4");
                sessid = (int)myDataSet.Tables["sessid"].Rows[0]["sess_id"];
                MessageBox.Show("5");
                return sessid;
            }
            catch
            {
                return -1;
            }
            finally
            {
                oleConn.Close();
                oleConn.Dispose();
            }adapter.Fill(myDataSet, "sessid");读到这里就出错了,

解决方案 »

  1.   

    MessageBox.Show("1");
                    OleDbDataAdapter adapter = new OleDbDataAdapter(sql, oleConn);
                    MessageBox.Show("2");
                    myDataSet = new DataSet();
                    MessageBox.Show("3");
                    adapter.Fill(myDataSet, "sessid");
                    MessageBox.Show("4");
                    sessid = (int)myDataSet.Tables["sessid"].Rows[0]["sess_id"];
                    MessageBox.Show("5");
    这些MessageBox是干吗用的?你不会设置断点吗?另外,建议不要用什么session做变量名,很容易就会出错误。与关键字冲突了。
    楼上的方法试试吧,在try中加入 oleConn.Open();试试。不过我觉得应该不是它的问题
    试一下吧
      

  2.   

    你是不是连接的access啊,你的查询语句是不是有问题加个[]看看
      

  3.   

    [ ] add table name or value name?
      

  4.   

    人家MessageBox应该是自定义断点吧呵呵
      

  5.   

    先测试oleConn.Open()
                String sql = "SELECT * FROM [Sessions] WHERE [Sessions].[session] = '" + session + "' AND year = '" + year + "'";
    给表名加上[] ,如果字段是数字型的,把‘’去掉,如[Sessions].[year] = " + year + "";