今天学习的是数据库的相关知识。

1.      数据库的表必须要有主键,主键分为两种,业务主键和逻辑主键。
业务主键是把有实际意义的字段作为主键,而逻辑主键是系统自动标识的一串唯一的数字。逻辑主键比业务主键更方便,不易出错。
2.      SQL语句。
SQL语句一般有四种,
(1)       插入(insert into 表名(字段,字段)  values(字段对应的值,字段对应的值))
(2)      查询(select 字段 from 表名 where 条件 order by 字段 desc/asc)(order by 要放在where 后面)
(3)       更新(update 表名 set 字段相关的计算)
(4)       删除(delete from 表名 where 字段=记录)
除此之外,还有给字段起别名:(select 字段 as 别名 from 表名)
3.      模糊搜索。
在SQL语句后面加like ‘X%’,%代表若干字符。
4.      ADO.NET。
ADO.NET 是.NET 中用来向数据库提交执行SQL语句的类库。
5.      数据库连接语句。
Using(sqlconnection conn=new sqlconnection(“Data Source=./ Initial Catalog=MyTest; User ID=sa;Password=*********”));
6.      Using。
Using可以自动进行数据回收,节约系统资源。用using比用close和dispose好。
7.      在VS中执行SQL语句。
Using(sqlcommend cmd=conn.creatcommend())
{

Cmd.CommandText=“SQL语句”

Cmd.ExecuteNonQuery()(用来执行SQL语句,一般用来执行updata,delete,insert语句)

或者用cmd.ExecuteScalar();(用来返回只有一行一列的结果,即selece,返回值为object类型)

8.      ExecutedReader。结果放在数据库中,没有放在客户端,初始指针放在客户端,每调用一次reader指针下移一条,直到移到最后一条为止

9.      注入漏洞。SQL语句在vs中,可以直接用+来拼接,用户输入的文本与程序中的SQL语句正好拼接成新的SQL语句,造成漏洞。最好不用拼字符串的方法读取文本框的值。更好的赋值方法是,

//SQL语句
                    cmd.CommandText = "select * from T_Staff where age>@age";
                    //将文本框txtDataset的值赋到SQL语句中
                    cmd.Parameters.Add(new SqlParameter("@age", txtDataset.Text));

10.      离线数据集。



//sqldataadapter是一个帮我们把sqlcommand查询结果填充到dataset中的类
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    //dataset相当于本地一个复杂的集合(相当于list<>)
                    DataSet dataset = new DataSet();
                    //把sqlcommand查询结果填充到dataset中
                    adapter.Fill(dataset);//执行cmd并且把查询结果放入dataset中
                    //指定数据库中第几个表
                    DataTable table = dataset.Tables[0];
                    //表中符合条件的行的集合
                    DataRowCollection rows =table.Rows;
                    //循环赋值
                    for (int i = 0; i < rows.Count; i++)
                    {
                        //遍历全部行
                        DataRow row = rows[i];
                        //取出第i行的age
                        int age = (int)row["Age"];
                        //取出第i行的name
                        string name = (string)row["Name"];
                        //输出
                        MessageBox.Show(age + "," + name);



11.      好的习惯是需要连接数据库时连接,不用时关闭,不用一直打开链接。