黑马程序员-ADO.NET学习总结

来源:互联网 发布:cf检测到数据异常 编辑:程序博客网 时间:2024/05/16 05:59

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

程序要和数据库交互要通过ADO.NET进行,通过ADO.NET就能在程序中执行SQL了,ADO.NET中提供了对各种不同数据库的统一操作接口。直接在项目中内嵌mdf文件的方式使用AQLServer数据库(基于服务的数据库)。mdf文件随项目走,用起来方便。

链接SQLServer

连接字符串:程序通过连接字符串指定指定要连接到哪台服务上的哪个实例的那个数据库,用什么用户名密码等。

项目内嵌mdf文件形式的链接字符串:dateSource=.\SQLEXPRESS;AttaachDBFilename=|DataDirectory|\Database1.mdf;Integrate Security=True;User Instance=True”.\SQLEXPRESS”表示本机上的SQLEXPRESS实例Database1.mdfmdf文件名。

ADO.NET中通过Sqlconnection类创建到SQLServer的链接,Sqlconnection代表一个数据库链接,ADO.NET中的链接等资源都实现了IDisposable接口,可以使用using等进行资源管理。

连接实例:

using (SqlConnection conn=new SqlConnection(@”Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.madf;Integrated Security=True;User Instance=True”))

  {

     conn.Open();

}

   Console.WriteLine(“打开数据库连接成功”);

   Console.ReadKey();

 

 

简单登陆界面:

  Console.WriteLine(“请输入用户名:”);

  String username=console.ReadLine();

  Console.WriteLine(“请输入密码:”);

  String password=console.ReadLine();

 

 

using (SqlConnection conn=new SqlConnection(@”Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.madf;Integrated Security=True;User Instance=True”))

{

  Conn.open();

  Using (SqlCommand cmd=conn.CreatCommand())

  {

cmd.CommandText=”select * from T-User whereUserName=’”+username+”’”;

//先到表中查询用户输入的用户名信息是否存在

   Using(SqlDataReader reader=cmd.ExecuteReader())

{

   If(reader.Read())//用户名存在

  {  string dbpassard=reader.GetString(reader.GetOrdinal(“password”));

     If(password==dbpassword)//比较数据库中记录的密码和用户输入的密码是否一致

       {

   Console.WriteLine(“登陆成功”);

}

else

{

  Console.WriteLine(“密码错误,登录失败”)

}

}

else

{

   Console.WriteLine(“用户名错误”)

}

}

}

}

简单登陆界面还可以写成

Console.WriteLine(“请输入用户名:”);

String username=console.ReadLine();

Console.WriteLine(“请输入密码:”);

 

using (SqlConnection conn=new SqlConnection(@”Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.madf;Integrated Security=True;User Instance=True”))

{

  Conn.open();

  Using (SqlCommand cmd=conn.CreatCommand())

  {    // @UN@p可以看成占位符,这种做法避免输入1’OR ‘1’=’1作为密码时出错

    Cmd.CommandText=”select count(*) from T-User where UserName=@UN  and Password=@p”;

    Cmd.Parameters.Add(new SqlParameter(“UN”,username));

    Cmd.Parameters.Add(new SqlParameter(“p”,password));

    Int i=Convert.ToInt32(cmd.ExecuteScalar());

    If(i>0)

      {

   Console.Write(“登陆成功”)

}  

      Else

        {

           Console.WriteLine用户名或密码错误);

}

}

}

 

向数据表中插入项代码

using (SqlConnection conn=new SqlConnection(@”Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.madf;Integrated Security=True;User Instance=True”))

{

  Conn.open();

  Using (SqlCommand cmd=conn.CreateCommand())

   {

  Cmd CommandText=”insert into T-USER(UserNamePassword)  output insert Id Values(‘admin’,’8888’)”;                        //output insert Id得到新插入数据的ID

  //ExecuteScalar()返回值为第一行第一列,得到自增字段的值

  Int id=Convert.ToInt32(cmd.ExecuteScalar());    Console.WriteLine(“新插入的主键:{0}”id)

}

}

将输入的数据存到表中

  Console.WriteLine(“请输入要插入的用户名:”);

  String username=console.ReadLine();

  Console.WriteLine(“请输入要插入烦人密码:”);

  String password=console.ReadLine();

using (SqlConnection conn=new SqlConnection(@”Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.madf;Integrated Security=True;User Instance=True”))

{

  Conn.open();

Using (SqlCommand cmd=conn.CreateCommand())

   {

Cmd.CommandText=”Insert into T-Users(UserName,password)values(‘”+username+”’,’”+password+”’)”;

cmd.executenonquery();

console.WriteLine(“插入成功”)

}

}

Reader用法实例

using (SqlConnection conn=new SqlConnection(@”Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.madf;Integrated Security=True;User Instance=True”))

{

  Conn.open();

Using (SqlCommand cmd=conn.CreateCommand())

  {

    Cmd.CommandText=”select * from T-User”;

    Using (SqlDataReader reader=cmd.ExecuteTeader())

    {

  While (reader.Read())//返回值为true

   {

  String username=reader.Getstring(reader.GetOrdinal(“UserName”));

  Int id=reader.getint32(reader.getordinal(“id”));

  String password=read.getstring(reader.getordinal(“password”));

  Console.WriteLine(“id={0},username={1},password={2}”,id,username,password);

}

}

}

}

 

.Close();关闭后还能打开

.Dispose();直接销毁,不能再次使用。

Using在出了作用域后会调用Dispose,SqlConnectionFileStream等的Dispose内部都会做这样的判断:判断有没有close,如果没有close就先closedispose

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

 

原创粉丝点击