黑马程序员之ado.net之一

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


连接数据库无外乎就这几个步骤:

(1)开头加上sql的命名空间;

(2)用Connection对象连接数据库

(3)利用建立好的连接,通过Connection、Command对象执行SQL命令

(4)使用完毕后关闭连接释放对象。

具体点的例子

  using是因为ADO.NET中的连接等资源都实现了IDisposable接口,即使用完后都需要释放,最简单的方法是使用using

1.引入命名空间 using System.Data.SqlClient;

2.如果说在winform中连接数据库,需要加入老师所讲的一段神奇代码,具体的解释我也大概看了一下,但还是有点不明白。

         代码如下:

          string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Releasel\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }

3.用Connection对象连接数据库

            using (SqlConnection conn = new SqlConnection(连接字符串))
            {
                conn.Open();          

             }

4.利用建立好的连接,通过Connection、Command对象执行SQL命令

 using (SqlCommand cmd = createcommand(conn,查询语句))
                {

                }

5.注入式查询漏洞:
  例如:str= "select * from table where UserName='"+name+"' and Password='"+password+"'";

假如用户给password赋值为'1' or '1'='1'

那么,就变成了select * from table where UserName='admin' and Password='1' or '1'='1',那么,这个表达式将永远为真,因此即使不知道原始密码也会登录成功。
 
要解决这种问题,就需要使用参数化查询
比如
cmd.CommandText = "select * from T_Users where UserName=@username and Password=@password";
cmd.Parameters.Add(new SqlParameter("username", name));
cmd.Parameters.Add(new SqlParameter("password", password));

 

最后,几个command方法

ExecuteNonQuery         执行语句并返回受影响的行数。
ExecuteReader              ExecuteReader一般用来实例化datareader,比如command的ExecuteReader方法,返回的结果可以直接赋给dr做数据源。
ExecuteScalar              执行查询,并返回查询所返回的结果集中第一行的第一列


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

详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值