黑马程序员技术交流社区

标题: using--Open()--- CreateCommand()---CommandText怎么理解? [打印本页]

作者: 李宏利    时间: 2012-7-25 22:50
标题: using--Open()--- CreateCommand()---CommandText怎么理解?


//            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=
//C:\Users\lhl\documents\visual studio 2010\projects\1111\1\Database1.mdf;Integrated Security=True;User Instance=True"))
//            {
//                conn.Open();
//                using (SqlCommand cmd = conn.CreateCommand())
//                {
//                    cmd.CommandText = "select * from T_Users";//c从表中读取数据、、、、
//                    using (SqlDataReader reader = cmd.ExecuteReader())
//                    {
//                        while (reader.Read())
//                        {
//                            string username = reader.GetString(reader.GetOrdinal("username"));
//                            int id = reader.GetInt32(reader.GetOrdinal("id"));
//                            string password = reader.GetString(reader.GetOrdinal("password"));
//                            Console.WriteLine("ID={0},名字={1},密码={2}",id,username,password);
                          
//                        }
//                    }
//                    cmd.ExecuteNonQuery();
//                    Console.WriteLine("插入成功");
//                }

//            }

reader.GetOrdinal 怎么理解

作者: 赵鹏程    时间: 2012-7-26 00:00
reader.getordinal或者指定列的序号。
作者: 王辉    时间: 2012-7-26 07:43
在给定列名称的情况下获取列序号。返回结果:从零开始的列序号。
作者: 陈云帆    时间: 2012-7-26 08:05
OdbcDataReaderGetOrdinal 方法:在给定列名称的情况下获取列序号。
GetOrdinal 首先执行区分大小写的查找。 如果失败,则进行另一次不区分大小写的搜索。 如果找不到从零开始的列序号,该方法将引发 IndexOutOfRange 异常。
GetOrdinal 不区分假名宽度。
由于基于序号的查找比命名查找更为有效,因此在循环中调用 GetOrdinal 的效率较低。 相反,调用一次 GetOrdinal,然后将结果分配给整数变量以便在循环中使用。
作者: 黑马李果    时间: 2012-7-26 12:18
本帖最后由 李过 于 2012-7-26 12:20 编辑

// using--Open()--- CreateCommand()---CommandText怎么理解?
对于比较占资源的实现了IDisposable接口的类,声明并初始化其对象的时候用using()包起来,using()后面的{}中的代码执行完了,就会自动释放该对象所占用的资源,如果没有close(),  也会帮你先close()掉。
conn.Open()是将创建好的SQL连接对象打开,然后就可以对所连接的数据库进行操作了,conn.CreateCommand(),是创建一个基于该SQL连接的SQL命令对象,该SQL命令对象只能作用于conn所连接的数据库,cmd.CommandText就是SQL命令字符串,""中的内容为SQL语句。

// reader.GetOrdinal 怎么理解
reader.GetOrdinal(string fieldName), 其中reader为一个SqlDataReader对象,是由CommandText为查询语句的cmd的ExecuteReader()方法返回的;从第一行开始,调用一次reader.Read()就读一条记录,如果读到了就返回true,没读到就返回false。reader.GetOrdinal(string fieldName)返回fielName字段从0开始的序号, 主要用于获取当前行中该字段的值,因为reader.Get[ValueType](int ordinal)中的参数要求是字段的序号。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2