当前位置: 代码迷 >> C# >> 初学者请问:Access与C#2010读写即变量赋值有关问题
  详细解决方案

初学者请问:Access与C#2010读写即变量赋值有关问题

热度:101   发布时间:2016-05-05 04:35:19.0
菜鸟请教:Access与C#2010读写即变量赋值问题
本人菜鸟一枚,刚接触C#,遇到问题,请大神们不利赐教。非常感谢!
          //这是数据库内数据
其中学号和成绩列的数据为数字类型,而姓名列的数据为文本类型。

程序实现目的:
将数据库中指定的值赋给变量,比如pp[0]=小明;  pp[1]=小花;pp[2]=小田; qq[0]=201220191;qq[1]=201220100;qq[2]=201220183;dd[0]=98;dd[1]=100;dd[2]=95;当然里面的每列对应的数据实际上有30000个。数据有整形和浮点型。
然后依据变量得到值后,进行程序的计算。最后得到的结果也有很多组,将其分别输入到excel和ACCESS


根本目的是读取其中的数据并赋值给指定变量。由于不是很懂,做了如下尝试,代码如下:
第一部分代码:
OleDbConnection conn = new OleDbConnection();
            string strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                                         "Data Source=C:ACCESS\\CSE_DEPT.accdb";
            conn = new OleDbConnection(strConnectionString);
            conn.Open();
            OleDbCommand testCommand = new OleDbCommand("SELECT ID,姓名, 学号 FROM fanli");            
            DataTable dt = new DataTable();                        
            OleDbDataAdapter DA = new OleDbDataAdapter (testCommand);               
            DA.Fill(dt);
            string a = dt.Rows[1][0].ToString();
            Console.WriteLine(a);
            int b = Convert.ToInt32(dt.Rows[1][1].ToString());
            double c = Double.Parse(dt.Rows[1][2].ToString());
            conn.Close();

错误信息:程序不能运行,显示DA.Fill(dt)老是出现错误,始终无法填充。

第二部分代码:
OleDbConnection conn = new OleDbConnection();
            string strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                                         "Data Source=C:\\Users\\liugang\\Desktop\\ACCESS\\CSE_DEPT.accdb";
            conn = new OleDbConnection(strConnectionString);
            conn.Open();
            string login = "SELECT ID,姓名, 学号 FROM fanli";
            OleDbCommand testCommand = conn.CreateCommand();
            testCommand.CommandText = login;
            OleDbDataReader testReader = testCommand.ExecuteReader();
            while (testReader.Read())
            {
                string[] pp=new string[3];
                int i;
                for (i = 0; i <= 2; i++)
                {
                    pp[i] = (string)testReader["姓名"];
                    Console.WriteLine("pp={0}", pp[i]);
                }
                Console.WriteLine("pp={0}", pp);                 
                
                           
            }
            testReader.Close();
            conn.Close();
            Console.Read();

错误信息:代码没有错误,也能正常运行,但是运行结果却不是我想要的,我希望得到这样一种结果
pp[0]=小明;  pp[1]=小花;pp[2]=小田;    并且能够在外部使用。






------解决思路----------------------
看错了
你需要获取所有行的姓名
那么你不要在for循环里反复赋值啊
while循环才是循环的行,你的for循环是在循环列
------解决思路----------------------
testReader[i]
就表示取第i列的值

你这个问题是应该在while循环里取值,而不要在while循环里再放for循环
------解决思路----------------------
你这个新手太新了,跟你有点没法沟通
你先把数组整明白了行吗
  相关解决方案