本人菜鸟一枚,刚接触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循环
------解决思路----------------------
你这个新手太新了,跟你有点没法沟通
你先把数组整明白了行吗