黑马程序员---关于对ADO.Net学习的总结

来源:互联网 发布:淘宝上有卖A片吗 编辑:程序博客网 时间:2024/06/05 11:39

---------------------- android培训、java培训、期待与您交流! ----------------------


一、连接SQLsever

1.连接字符串:程序通过连接字符串指定要连哪台服务器上的,包括哪个实例的哪个数据库、用什么用户名和密码等。

2.项目内嵌mdf文件形式的连接字符串“"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;UserInstance=True”。

其中“.\SQLEXPRESS”表示本机上的“SQLEXPRESS实例”,如果数据库名不是SQLEXPRESS,则需修改。“Database1.mdf”为mdf的文件名。

3.ADO.Net中通过SqlConnection类创建到SQLsever的连接。SqlConnection代表一个数据库连接,ADO.Net中的连接等资源都实现了IDisposable接口,可以使用using进行资源管理,执行备注中的代码如果成功OK。

using (SqlConnectionconn =new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\T_Database1.mdf;IntegratedSecurity=True;User Instance=True"))               //连接数据库

     {             

      conn.Open();                    //使用范围是{ }中

     }                                  //使用完自动释放

二、执行简单的SQL

1.SqlCommand表示向服务器提交的一个命令(SQL语句等),是一个类。

1)这个类的CommandText属性为要执行的SQl语句;

2)这个类的ExecuteNonQuery方法执行一个非查询语句(如:Update  Insert  Delete等),并返回影响的行数。

    using (SqlCommand cmd = conn.CreateCommand())

            {

             cmd.CommandText = "insert into T_phone (username,password) values ('admin','888888')";               

             cmd.ExecuteNonQuery();

            }

2. ExecuteReader方法是执行查询语句,它返回一个SqlDataReader类型的类。

1)这个类的Read()方法可以看成是一个指针,单向由上到下查找满足条件的数据,查找到数据后指针就停在该数据上方,返回值为true,当指针移动到最后,下面没有数据了,返回值为false。

2)这个类的GetString和GetInt32等方法,只接受整数参数,即序号(用GetOrdinal方法根据列名动态得到序号)得到该位置的数据。

如:string cityname =reader.GetString(reader.GetOrdinal("cityname"))

意思是得到查找到的那行,cityname 那列的数据。

三、VS中用SQL时需要插入变量的解决方法

1.字符串拼接法

cmd.CommandText = "select cityname from city where proid="+idx;

2.参数化查询

cmd.CommandText = "select cityname from city where proid=@idx";

                    

                    cmd.Parameters.Add(newSqlParameter("idx", idx));

注:第一种方法,字符串拼接法,有注入式漏洞,第二种方法更安全,所以,一般情况下用第二种方法,可以避免漏洞。

 


---------------------- android培训、java培训、期待与您交流! ----------------------