黑马程序员--ADO.NET小结(下)

----------------------  Windows Phone 7手机开发 .Net培训 、期待与您交流! ----------------------

//注入漏洞与参数化查询
拼接字符串容易造成注入漏洞,如:select count(*) from T_Users where UserName = '+username+' and Pwd = '+pwd+'    输入的时候输入:1' or '1'='1
结果为:"select count(*) from T_Users where UserName='admin' and Pwd='1' or '1'='1'"

//在同一个连接中,如果SqlDataReader没有关闭,那么是不能执行update之类的语句的。

//ComboBox用法:
1.ComboBox的显示值: Items.Add的参数是Object类型,也就是可以放任意数据类型的数据,可以设置DisplayMember属性设定显示的属性,通过SelectedItem属性取得到就是选择的条目对应的对象。
疑问:取出来的是Objct,怎么能转换为对应的类型?变量名知识“标签”。现实啊的值和实际的对象不一样,在ASP.NET中也有相同的东西。

把一个对象放到cbx里面默认显示的是该对象的ToString()方法。
要想显示某个名称,可以重写该类的string方法。例如:
	class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public override string ToString()
        {
            return Name;
        }
    }

//访问数据库的三种方式:
1. SqlDataReader
2. DataSet
3. 强类型DataSet

//引用中的文件实际上是一些DLL文件,要想用一些类的时候要把该类的DLL文件(即:引用)添加到引用中。

	//AttachDBFilename添加在VS中的数据库文件
三层架构中:在DAL层建立名为:DBSetting的类
public static string ConnectionString
{
	get { return "Data Source=.;Initial Catalog=MarketingManagement;Integrated Security=True"; }
}

连接数据库语句:
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=数据库名;Integrated Security=True");

SqlCommand表示向服务器提交的一个命令(SQL语句等),
	CommandText属性为要执行的SQL语句,ExecuteNonQuery方法执行一个非查询语句(Update、insert、Delete等)
	ExecuteNonQuery返回值是执行的影响行数
	using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "insert into Books(BookNo,BookName,Price) values('001','C#','100')";
        cmd.ExecuteNonQuery();//非查询语句
        Console.WriteLine("插入成功!");
    }
	
ExecuteReader执行有多行结果集

SqlCommand的 ExecuteScalar 方法用于只想能够查询,并返回查询所有返回的结果集中第一行的第一列,
	因为不能确定返回值的类型,所以返回值是Object类型。
	reader的GetString、GetInt32等方法只接受整数参数,也就是序号,
		用GetOrdinal方法根据列名动态得到序号
	cmd.CommandText = "select * from Users";
    using (SqlDataReader reader = cmd.ExecuteReader())
    {
		while (reader.Read())
		{
            //Console.WriteLine(reader.GetString(1));//得到第几列
            Console.WriteLine(reader.GetString(reader.GetOrdinal("UserName")));
        }
    }
将连接字符串写在App.Config中:
1. 添加APP.config文件
2. 在App.config中添加connectionString段,添加一个add项,用name属性起一个名字(如DbConnStr),
	connectionString属性指定连接字符串。
3. 添加引用 找到 Syetem.configuration。不是所有.NET中的类都能直接调用,类所在的Assembly要被
	添加到项目的应用中才可以。
4. ConfigurationManager.ConnectionStrings["DbConnStr"].ConnectionString得到连接字符串。

//文件选择对话框FolderBrowserDialog
按照通配符搜索目录下的文件:
	string[] files = Directory.GetFiles(string path,string searchPattern,SearchOption searchOption);
	
Path.GetFileNameWithoutExtension(filename),得到文件的文件名(不要扩展名);
Path.Combine(string path1,string path2),将两个路径合并
Path.GetExtension(string path),得到文件的后缀
Path.GetFileName(string path),得到文件的文件名
Path.GetFullPath(string path),得到文件的全路径

//读取数据:
数据量小的时候用:File.ReadAllLines() 把文件一次性加载到内存。经反编译得知ReadAllLines默认编码是:UTF-8
数据量大的时候用:StringReader


---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值