• 关于ADO.NET@SQL Server&SqlDataReader


    先说基础的,说基础的明白了再深的也是一样的。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; }
  • 相关阅读:
    Servlet基本概念及其部署
    MSSQL数据库全库批量替换
    我的第一个GAE(google appengine)应用
    今天你有病了吗?
    [Microsoft][ODBC SQL Server Driver][DBNETLIB] 一般性网络错误
    Google appengine 上传输错用户名解决办法;
    查看畸形文件
    Session
    jq幻灯片2
    JS打开层/关闭层/移动层动画效果
  • 原文地址:https://www.cnblogs.com/mamiyiya777/p/5856090.html
Copyright © 2020-2023  润新知