ado.net 笔记

来源:互联网 发布:苹果电脑的解压缩软件 编辑:程序博客网 时间:2024/06/05 06:49
 protected void Page_Load(object sender, EventArgs e)
        {            string dataDir = AppDomain.CurrentDomain.BaseDirectory;                if (dataDir.EndsWith(@"\bin\Debug\")|| dataDir.EndsWith(@"\bin\Release\"))               {                              dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;                        AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);                      }            SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True");            try            {                conn.Open();                    Response.Write("数据库连接成功!");            }            catch(Exception ee)            {                Response.Write("连接失败,原因为:"+ee.Message);            }        }

SqlDataReader reader=cmd.ExecuteReader();

reader.GetString(i);方法通过第i列的方法获取表中第i列的数据。

reader.GetOrdinal("user");通过列名来获取资源数据

readre.read();//向前读取一行一行进行的。不能回退

SQL并不区分大小写,但是还是推荐使用大写来写SQL语句,这样能够在应用程序中清晰的辨认

ExecuteScaler : 只读,读取返回结果集合里面第一行第一列
ExecuteNonQuery:只写,适合于只需要修改的情况
ExecuteReader:只读,可以读取多行
DataAdapter / DataSet:读取之后,可以进行离线操作,然后再把改动update回数据苦,功能相当于一个数据库:有relation,constraint,view,sort,search支持,而且可以直接和.net控件绑定,相当于一个business层的功能,还可以通过webservice传输到其它远程机器,非常方便。



Open()

使用 ConnectionString 所指定的属性设置打开数据库连接。

命名空间:System.Data.SqlClient
程序集:System.Data(在 system.data.dll 中)

Close();//但是还是可以打开

关闭与数据库的连接。这是关闭任何打开连接的首选方法。

命名空间:System.Data.SqlClient
程序集:System.Data(在 system.data.dll 中)




dispose()后就不能再次打开;

 using (SqlCommand cmd = conn.CreateCommand())                {                    cmd.CommandText = "select * from users";                    using(SqlDataReader reader=cmd.ExecuteReader())                    {

using在出了作用域后会调用dispose(),SqlConnection,filestream等的dispose内部会判断有没有close,如果没有close就close后再dispose();

SqlCommand.ExecuteScalar 方法执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。 string cmdstr = "select count(*) from users where UserName='"+username+"' and PassWord='"+password+"'";                SqlCommand cmd = new SqlCommand(cmdstr,conn);                int i = Convert.ToInt32(cmd.ExecuteScalar());//如?果?查é到?有瓺的?话°,?i是?一?个?非?零?值μ,?否?则ò为a零?值μ


conn.Open();                //下面这种方式有漏洞               // string cmdstr = "select count(*) from users where UserName='"+username+"' and PassWord='"+password+"'";                //上面这种方法会有注入漏洞攻击风险                //下面这种方法可以避免:                string cmdstr = "select count(*) from users where UserName=@u and PassWord=@p";                                SqlCommand cmd = new SqlCommand(cmdstr,conn);                cmd.Parameters.Add(new SqlParameter("u", username));                cmd.Parameters.Add(new SqlParameter("p",password));                int i = Convert.ToInt32(cmd.ExecuteScalar());//如果查到有的话,i是一个非零值,否则为零值                if (i > 0)                {                    Console.WriteLine("恭喜您,登录成功!!"+i);                                    }                else                {                    Console.WriteLine("用户名或者密码错误,登录失败!!!!!!!"+i);                 }

利用configuration文件来连接数据库:

<configuration>    <system.web>        <compilation debug="true" targetFramework="4.0" />    </system.web>  <appSettings>    <add key="constring" value="server=.;database=Northwind;uid=sa;pwd=;"/>  </appSettings></configuration>

然后在程序中引用

            SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["constring"]);            SqlCommand cmd = new SqlCommand();            cmd.CommandText = "select * from Customers";            cmd.Connection = con;            con.Open();            SqlDataReader reader = cmd.ExecuteReader();            while (reader.Read())            {                Response.Write(reader.GetString(0)+"\t"+reader.GetString(1)+"<br/>");            }            con.Close();

下面是连接成功后的输出结果: