操作sqlserver数据库常用的三个方法
1、 ADO.NET
-> 连接字符串,常用的两种方式:
server=计算机名或ip\实例名;database=数据库名;uid=sa;pwd=密码;
server=计算机名或ip\实例名;database=数据库名;integrated security=true;
-> 常用的类库
SqlConnection 连接数据库用
SqlCommand 执行SQL语句
SqlDataReader 读取的对象(此种读取数据的方式有点像StreamReader)
SqlAdapter 将数据库中的数据放入DataSet
DataSet 内存级别的离线数据库(有点像FileStream.Read)
对比模型
(图片来自网络,若是原文作者看到,请提供链接地址,时间很久远了.......)
-> 连接数据库的步骤
-> 写连接字符串
-> 创建连接对象,使用连接字符串
-> Open,打开数据库
-> 关闭释放数据库,可以使用using
2、执行SQL语句
-> 使用SqlCommand对象
-> 步骤:
-> 首先创建SQL语句字符串(sql)与连接通道SqlConnection(conn)
1 string sql = "insert into tbl(id, name) values(1, '123');" 2 SqlConnection conn = new SqlConnection(@"server=计算机名或ip\实例名;database=数据库名;uid=sa;pwd=密码;");
-> 创建SqlCommand对象,将sql与conn交给它(通过构造函数或属性)
SqlCommand cmd = new SqlCommand(sql, conn);
-> 在Open的情况下,调用方法(SqlCommand对象的方法)
1 conn.Open(); 2 cmd.方法();
-> 常用的三个方法
1 ExecuteNonQuery() 专门执行非查询语句(增、删、改等),返回受影响行数 2 ExecuteScalar() 执行查询,返回的是结果中第一行第一列的数据(object) 3 ExecuteReader() 专门执行查询,可以获得多行多列的数据
3、 先创建一个表,插入数据
注意问题
-> sql语句如果在SSMS中执行没有问题在ADO.Net一般不会出现问题
-> 关于主键和自动增长
-> 连接字符串数据库的名字
-> 关于约束
异常处理
1 try 2 { 3 // 可能出现异常的代码 4 } 5 6 catch(Exception ex) 7 8 { 9 // 出现异常之后的代码 10 } 11 12 finally 13 { 14 // 用来关闭连接 15 }
4、 ExecuteScalar()
-> 读取数据,获取第一行与第一列
-> 执行中除了SQL语句和执行方法不同流程都一样
5、-> 将SQL语句中的参数拼接修改一下
-> 凡是要用到参数的地方,都将这个变数,写成一个变量
-> 使用的时候为这个变量赋值即可
-> 实现步骤
-> 写SQL语句的时候,用"@别名"代替挖坑的地方
1 select COUNT(*) from tblLogin where logUid='{0}' and logPwd='{1}';容易sql注入漏洞攻击 2 select COUNT(*) from tblLogin where logUid=@logUid and logPwd=@logPwd;
-> 在ADO.Net中执行SQL语句前(cmd.方法()调用前)
-> 创建一个对象,SqlParameter
1 SqlParameter p = new SqlParameter(参数的别名, 参数的值); 2 SqlParameter p1 = new SqlParameter("@logUid", txtUid.Text.Trim()); 3 SqlParameter p2 = new SqlParameter("@logPwd", txtPwd.Text);
-> 将参数加到cmd对象中
cmd.Parameters.Add(参数对象);
cmd.Parameters.Add(p1);