黑马程序员技术交流社区

标题: ADO.NET中问题 [打印本页]

作者: 韩温华    时间: 2012-11-18 22:39
标题: ADO.NET中问题
while ((streamReader.ReadLine())!= null)//遍历文件的每一行
                                {
                                    string[] strs = streamReader.ReadLine().Split('|');
                                   //将其中的每一行的内容按照“|”的方式进行分割
                                    string Name = strs[0];//第一部分为姓名
                                    string Nickname = strs[1];//第二部分为昵称
                                    using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=true;User Instance=true"))//连接字符串
                                    {
                                        conn.Open();//打开链接
                                        using (SqlCommand cmd = conn.CreateCommand())
                                        {
                                            cmd.CommandText = "insert into T_Mystudent(name,nicknam)  values (@N,@NK)";
                                            cmd.Parameters.Clear();
                                            cmd.Parameters.Add( new SqlParameter("N", Name));
                                            cmd.Parameters.Add ( new SqlParameter("NK", Nickname));
                                            cmd.ExecuteNonQuery();//执行SQL语句查询过程
                                }
                            }
使用 cmd.Parameters.Clear()的原因是什么呢,可以具体解释一下么
作者: 王新阳    时间: 2012-11-18 22:58
cmd.Parameters.Clear()语句确切的说是解除它对其它对象的引用,而不是清除它包含的对象,cmd.Parameters.Clear()解除对象引用后,它之前引用的对象还是存在的。所以无论ExecuteNonQuery被多次执行都不会有异常。
作者: 马毅    时间: 2012-11-19 01:11
王新阳 发表于 2012-11-18 22:58
cmd.Parameters.Clear()语句确切的说是解除它对其它对象的引用,而不是清除它包含的对象,cmd.Parameters.C ...

防止已有Parameters导致sql语句错误,从某种程度上你可以认为和Add方法相对~~~
作者: 韩俊    时间: 2012-11-19 14:57
参数不能重复添加,在while中一直用的就是一个sqlcommand,所以往下执行时,要将上一次执行的参数清除掉。cmd.Parameters.Clear();就是这个功能





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