zoukankan      html  css  js  c++  java
  • 数据访问-----ADO.NET 练习1

    数据访问:——ADO.NET

    1.创建链接
    2.创建与执行命令——SQL
    3.读取或准备相关数据

    一、命名空间:
    using System.Data;
    using System.Data.SqlClient;

    二、链接类 - SqlConnection——创建与数据库的链接
    (一)链接字符串: 连哪台电脑,连电脑上的哪个数据库,用户名是什么,密码
    server=目标服务器的IP地址;database=数据库名;uid=数据库的登录名;pwd=数据库的登录密码
    server=.;(代表本机)database=mydb;uid=sa;pwd=123
    (二)实例化——构造
    SqlConnection conn = new SqlConnection();
    SqlConnection conn = new SqlConnection(链接字符串);
    (三)属性
    ConnectionString:(string)指定与获取链接字符串。
    State:用来描述链接当前的状态。Closed-链接处于关闭状态。Open-链接处于打开状态。
    (四)方法
    Open():打开链接
    Close():关闭链接。
    (五)案例
    1.定义链接字符串。
    string connectionString = "server=.;database=mydb;uid=sa;pwd=123";
    2.构造链接对象
    SqlConnection conn = new SqlConnection(connectionString);

    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = connectionString;
    3.打开链接
    conn.Open();
    4.关闭链接
    conn.Close();

    三、命令类——SqlCommand——向数据传递SQL语句或存储过程,并执行。
    (一)构造:
    SqlCommand cmd = new SqlCommand();
    SqlCommand cmd = conn.CreateCommand();
    (二)属性:
    Connection:(SqlConnection)指定通过哪个链接对象来操作数据库
    CommandText:(string)要执行的SQL语句或存储过程名.
    (三)方法:
    ExecuteNonQuery()——执行命令,返回影响行数。一般用来执行 增删改 的语句。
    ExecuteReader() ——执行命令,返回一个读取器对象。一般用来执行 查询 语句。
    (四)案例:
                string connectionString = "server=.;database=mydb;uid=sa;pwd=123";
                SqlConnection conn = new SqlConnection(connectionString);
                conn.Open();

                //操作数据库
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = "insert into student values('s001','张三','1','清华大学','1990-6-1')";
                cmd.ExecuteNonQuery();

                conn.Close();


    四、读取器类:——SqlDataReader——从查询的结果集中把数据逐个读出来。
    (一)构造:
    只有唯一的一种构造方式。再没有别的构造方式了。
    SqlDataReader dr = cmd.ExecuteReader();
    说明:只读,只向前,读取器工具。内存中只占一条记录的空间。
    (二)属性:
    HasRows : bool,判断是否有数据可读。是否查出数据来了。

    (三)方法:
    Read():bool。把结果集中当前行读取内存的datareader中来。读来了,返回true。没有数据可读,返回false。
    在使用SqlDataReader读取某列数据时,必须先使用Read()方法把数据先取到内存中的SqlDataReader中。

    最常用的读取句式:
                while (dr.Read())
                {
                    Console.WriteLine(dr[0].ToString() + dr[1].ToString() + dr[2].ToString() + dr[3].ToString() + dr[4].ToString());
                }
    从SqlDataReader中读取某列值的时候,使用方法:
    1.dr[列的下标/列的索引号]
    2.dr["列名"]
    3.dr.GetInt(索引号)  dr.GetString(索引号) ...
    (四)案例:
    1.登录。
    //SQL代码
    create table Login
    (
    Username varchar(50) primary key,
    Password varchar(50)
    )
    go

    insert into Login values('aaa','aaa')
    insert into Login values('bbb','aaa')
    insert into Login values('ccc','aaa')
    insert into Login values('ddd','aaa')
    insert into Login values('eee','aaa')
    //vs代码
     static void Main(string[] args)
            {
                Console.Write("登陆:");
                string uid=Console.ReadLine();
                Console.Write("密码:");
                string pwd = Console.ReadLine();
                //操作数据库
                SqlConnection conn = new SqlConnection("server=.;database=mydb;uid=sa;pwd=5587725");
                conn.Open();
                SqlCommand comm = conn.CreateCommand();
                comm.CommandText = "select * from Login where Username='"+uid+"'and Password='"+pwd+"'"; //查询
                SqlDataReader dr = comm.ExecuteReader();   //生成 读取器对象
                if (dr.HasRows)
                {
                    Console.WriteLine("正确");
                }
                else
                {
                    Console.WriteLine("错误");
                }
                conn.Close();
                Main(args);
            }
    2.读取显示表中的所有的数据。

    3.完善插入功能,在插入之前,判断一下学号是否已存在。如果已存在就提示报名,不存在就插入进去。

    查询练习:
    class Program
        {
            //将登陆的信息设定成常量,常量一般用大写。
            public const string CONNECTIONSTRING = "server=.;database=mydb;uid=sa;pwd=5587725";
            //民族
            static string Getnationname(string code)
            {
                string str = "";
                SqlConnection conn = new SqlConnection(CONNECTIONSTRING);
                conn.Open();

                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select * from Nation where code='"+code+"'";
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    dr.Read();
                    str = dr["Name"].ToString();
                }
                else
                {
                    str = "未知";
                }
                conn.Close();
                return str;
            }
            //工作简历
            static string GetWorks(string code)
            {
                string str="";
                SqlConnection conn = new SqlConnection(CONNECTIONSTRING);
                conn.Open();

                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select * from work where InfoCode='"+code+"'";
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    str += ((DateTime)dr["StartDate"]).ToString("yyyy年MM月dd日")+" ";
                    str += ((DateTime)dr["EndDate"]).ToString("yyyy年MM月dd日") + " ";
                    str += dr["Firm"].ToString() + " ";
                    str += dr["Depart"].ToString() + " ";

                }
                conn.Close();
                return str;
            }
            // 家庭称谓
            static string Getfamily(string title)
            {
                string str = "";
                SqlConnection conn = new SqlConnection(CONNECTIONSTRING);
                conn.Open();
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select * from title where code='"+title+"'";
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    dr.Read();
                    str = dr["name"].ToString();
                }
                else
                {
                    str = "";
                }
                conn.Close();

                return str;
            }
            //家庭关系
            static string GetFamily(string code)
            {
                string str="";
                SqlConnection conn = new SqlConnection(CONNECTIONSTRING);
                conn.Open();
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select * from family where infocode='"+code+"'";
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    str += dr["Name"].ToString()+" ";
                    str += Getfamily(dr["title"].ToString())+" ";
                    str += dr["firm"].ToString()+" ";
                }
                conn.Close();
                return str;
            }
            static void Main(string[] args)
            {
                string str = "";
                //显示
                SqlConnection conn = new SqlConnection(CONNECTIONSTRING);

                conn.Open();

                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select * from info";
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    string code = dr["Code"].ToString();
                    string name = dr["Name"].ToString();
                    string sex = ((bool)dr["Sex"])?"男":"女";
                    string nation = Getnationname(dr["Nation"].ToString());
                    string birthday = ((DateTime)dr["Birthday"]).ToString("yyyy年MM月dd日");

                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine(code+" "+name+" "+sex+" "+nation+" "+birthday);
                    Console.ResetColor();

                    //显示工作简历
                    Console.WriteLine("******************工作简历**************************");
                    Console.WriteLine(GetWorks(code));

                    //显示家庭情况
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("******************工作简历**************************");
                    Console.WriteLine(GetFamily(code));
                    Console.ResetColor();
                }

                Console.ReadLine();
                conn.Close();
                
            }
        }

  • 相关阅读:
    精英程序员
    C语言(2)
    C语言练习
    C语言工具---Code::Blocks
    C语言(1)
    【udacity】机器学习-神经网络
    【udacity】机器学习-回归
    【udacity】机器学习-决策树
    【术语记录】机器学习
    python入门(九):目录操作
  • 原文地址:https://www.cnblogs.com/likaixuan/p/4486093.html
Copyright © 2011-2022 走看看