数据访问-----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日")+"\t";
                str += ((DateTime)dr["EndDate"]).ToString("yyyy年MM月dd日") + "\t";
                str += dr["Firm"].ToString() + "\t";
                str += dr["Depart"].ToString() + "\n";

}
            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()+"\t";
                str += Getfamily(dr["title"].ToString())+"\t";
                str += dr["firm"].ToString()+"\n";
            }
            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+"\t"+name+"\t"+sex+"\t"+nation+"\t"+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();
            
        }
    }

时间: 2024-10-13 06:46:03

数据访问-----ADO.NET 练习1的相关文章

数据访问-----ADO.NET 小结和练习

ADO.NET两个命名空间,三个类.一.两个命名空间:using System.Data;using System.Data.SqlClient; 二.三个类:SqlConnection    SqlCommand    SqlDataReader (一)SqlConnection链接类1.构造链接字符串的写法:server=服务器IP或服务器名;database=数据库名;uid=用户名;pwd=密码server=.;database=mydb;uid=sa;pwd=123Data Sourc

数据访问-----ADO.NET 练习2

一.向Info中插入数据.1.从界面输入信息.2.输入内容的检查:基本格式的检查,主外键的检查.3.执行插入 class Program    {        //定义常量        public const string CONNECTIONSTRING = "server=.;database=mydb;uid=sa;pwd=5587725";        //检查格式        public static bool check(string ColumnName,st

ADO.NET数据访问技术概览

1. 以数据为中心的应用程序设计 1.1. ADO.NET 支持下列的存储类型? 无结构? 有结构, 无层次的数据 – 以逗号分离的数据(CSV) 文件.Microsoft Excel 电子表格.Microsoft Exchange 文件.Active Directory 文件等? 有层次的数据 – XML 文档等? 关系型数据库 – SQL Server.Oracle.Access 等. 1.2. 连接环境? 连接环境是指用户在这种环境下始终保持与数据源的连接? 优点 – 环境易于实施安全控制

ADO.NET编程之美----数据访问方式(面向连接与面向无连接)

最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美>,当然,我不是做广告的,只因它确实还可以),里面关于二者之间的区别及原理讲得很清楚,下面我们就进入主题.今天心情不错.... 我们都知道ADO.NET提供了对数据库或外部数据源的数据访问接口,它本身实现了面向连接与面向无连接的数据访问方式.面向连接是以数据库连接为基础的,在打开数据库连接后,将数据访问指令

ADO面向对象使用(实体类、数据访问类、范型集合)

ADO面向对象使用: !!!!!在其它文件夹下创建新类,加public!再考虑是不是引用数据库命名空间和其它类的命名空间!是否需要将构造函数写出来,将数据库的两个类实例化!!!!! 实体类:就是封装,将数据库中的表封装成同名的类,里面的成员变量与表里面的列是对应的,一个对象就代表数据库中一行数据: 字段扩展:查询关联的外键表数据,只读! 数据访问类:就是对于实体类对应的数据库进行操作的,就是写方法! 泛型集合: List<T> list = new List<T>(); T代表的就

ADO.NET数据访问技术

就是将C#和MSSQLl连接起来的纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中,也可以将数据库中的数据提取到内存中供程序调用.是所有数据访问技术的基础. ADO.NET使用一些ADO对象,如Connection和Command对象,也引入了一些新对象.关键的新对象包括DataSet,DataReader,和DataAdapter. Connections. 用于连接和管理针对数据库的事务. Commands. 用于发出针对数据库的SQL指令. DataReaders. 用于从SQ

[翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)

Performance Comparison: Data Access Techniques Priya DhawanMicrosoft Developer Network January 2002 原文链接:https://msdn.microsoft.com/en-us/library/ms978388.aspx 概要:在典型的应用环境中,比较不同数据访问技术的表现性能.适用于Microsoft .NET Framework Beta2 和 Microsoft SQL Server 2000

【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)

开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类,类名与表名一致.表中的每一列,都为该类下的成员变量和属性也就是最简单的封装 把数据库中的表名变为类的类名. 把数据库中的每一个列,变为实体类中的成员变量和属性 列名与属性名一致.成员变量名:在列名前边加上下划线.因为在外部访问只能访问到属性,为了看起来一致. using System; using

ADO.NET(完整修改和查询、实体类,数据访问类)

一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = false; Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); //到数据库中查询输入的用户名是否存在 SqlConnection conn = new SqlConnection("server=.