ADO.NET 的 DataSet(很重要)
- 控件 From : frm名称 frmLogin
- 如何在按钮中添加快捷键 登录(D) 这个是这么做的呢? 其实很简单 就是把按钮的 Text属性 改成 登录 (&D)
- 如果忘记了Sql数据库的connectionStrings ,
- 可以创建一个 文本文件, 后缀改为 udl
- 开始设置具体连接方法,
- 用在记事本中打开 , 就可以看到连接数据库的 connectionStrings
- SqlDataReader 的对象记得要Close() , 不然就会占用这个资源 , 虽然出了 using 的 { } 的时候会释放,但是 释放和关闭时不一样的.
- 释放的意思是封闭了这个桥, 虽然封闭了, 但是在内存中还是占有内存的, 一段时间后才会关闭掉
- 关闭的意思是炸掉了这个桥,
- 字段和属性的区别?
-
属性是类提供给外部调用时用,的可以使用 对象.属性 设置或读取 一个值 get{reture xxx;}表示可读 set{xxx = value;}表示可写 字段就是类内部用的.存储数据
-
- 数据库的安全
- SQL注入攻击: 就是通过对一些的探测SQL中的数据的 SQL语句来进行分析 , 如果C#中 和数据库连接的安全逻辑不够,那个就可以不用用户密码就可以登入...
- eg: select count(*) from 表 where name = ‘ {0} ‘ and psw = ‘{1 }‘ 很多人多用这个来判断用户名和密码是否一致, 所以我们要找一个 {0} 和 {1} 的字符串使得 count(*) = 1 ,这样就可以不用知道账号密码登录. 这里有一个{0}就可以 了, {0} =" ‘ or 1=1 -- " 这个就可以了,那个{1} 还都可以不用考虑, 虽然这里返回的不是 = 1 , 但是是 >0
- 因此,我们要注意以下几点
- 对客户输入进行判断
- count == 1 (王道) 就是我们验证是否有这个账号密码用这个 而不是 count > 0
- 用存储过程开发
- CTRL + J 可以弹出 那个代码补全的部分(很好用) .....
- 判断字符串为空的方法? str.length == 0
-
窗体之间的跳转?在frmLogin这个面板的 登录按钮 的那个登录成功的地方加上这几句this.DialogResult = DialogResult.Yes ;
在program.cs 的类中加上FrmLogin login = new FrmLogin();DialogResult dr = login.showDialog() ; //阻塞式代码if (dr == DialogResult.Yes){Application.Run( new FrmMain() ); //这里面的是主要面板}
- 一行一行的往前读取 , 只读 , 不能修改
- 适用于遍历数据
sdr | id | name | psw | BOF --每一个表的首部会有这个 常识 |
1 | zx | 123 | ||
2 | xd | 123 | ||
EOF --每个表的尾部会有这个 |
- sdr [ 下标 | "列名" ] : object 弱类型读取 -----------这个叫做索引器
- sdr.GetString( 下标 ); : string 强类型读取
- 他们的 优缺点?
- 第一个是 每次读取都要强转, 但是好处是 永远都不会报错
- 第二个是 只能读取string ,读取int(其他类型)会报错, 当然这个 Get类型(下标) 这个有很多种
- DataTable //表
- DataRowCollection //行
- DataColumnCollection //列
- ConstraintCollection //约束
- DataRelationCollection //表之间的关系
- DataSet dataSet = new DataSet();
- Sqlconnection conn = new SqlConnection(connStr);
- SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
- sda.Fill(dataSet , "表名 习惯用temp");
- dataGridView.DataSource = dataSet.Tables["temp"];
- /* DataGridView 中的属性 有一个是 DataPropertyName 把DataTable 中的表的列 与数据库列名绑定 , 这个输出在表格的列名就不会是数据库中的名称了*/
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。