先说基础的,说基础的明白了再深的也是一样的。SQL是关系型数据库,所以就决定了对其操作的时候ADO的一些类要相互联系,Connection 类Command对象(ExecuteReader()方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入数据可用ExecuteNonQuery()方法来执行插入命令)DataReader类,DataSet对象,DataAdapter类等等,记住我们需要抓住的是主要的也就是中间的类或者对象,就是Command对象,抓住主要的得了,次要的都要和他发生关系(有点猥琐,嘿嘿),记住你要顶住他,观察其他的类的动作,上例子:
SqlConnection Conn = new SqlConnection(ConfigurationSettings.AppSettings[0].ToString());
string str;
str = "select CarNo,CarCla from CarIn ";
Conn.Open();
SqlCommand datacommand = new SqlCommand(str, Conn);
SqlDataReader reader = datacommand.ExecuteReader();
int i = 0;
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}",
reader[0], reader[1]));
}
看红色部分,都是围绕SqlCommand展开的;
顺便说下SqlDataReader他是读取是一行,如果你想让他把数据都读取的话要用到循环,但是这个不是他的强项。我认为他的强项是读取一行的数据,读取速度快,切记他读取的数据和你str = "select CarNo from CarIn ";这句话有很大的关系,再重复一遍,他是读取一行的数据,另起一行的话,他要重新从[0]开始,所以这个不适合保存或者操作数据(比如你要对读取的一列数据经行操作的话是不可行的,像上面显示还是可以的)而这个数组取决于你选择的相str = "select CarNo,PortNam from CarIn ";这个读取的话就是 read[0]和read[1]。所以这样的话你要对整个数据经行操作的话,很显然这个类不合适了,切记,他只是读取一行,我太啰嗦了。。。。
当然如果你确实想操作这些数据,我们可以以数组的形式读取出来,前提是你必须知道你这个表中有多少行,因为你要设置数组的个数
public string[] getCarNo() { int arrayno = getDataNum("CarIn");//获取行数
string[] Carray = new string[arrayno]; str = "select CarNo from CarIn "; Conn.Open(); SqlCommand datacommand = new SqlCommand(str, Conn); SqlDataReader reader = datacommand.ExecuteReader(); int i = 0; while (reader.Read()) { Carray[i] = reader[0].ToString(); i++; } Conn.Close(); return Carray; }