连接数据库--小练

数据访问:——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
(二)实例化——构造
string aaa="链接字符串";
SqlConnection conn = new SqlConnection(aaa);

SqlConnection conn = new SqlConnection(链接字符串);

string aaa="链接字符串";
SqlConnection conn = new SqlConnection();
conn.ConnectionString=aaa;
(三)属性
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();

 

 

 

 

 

********************************************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main000(string[] args)
        {
            //Console.WriteLine("请输入个人信息:");
            //Console.WriteLine("学号;");
            //string sno = Console.ReadLine();
            //Console.WriteLine("姓名;");
            //string sna = Console.ReadLine();
            //Console.WriteLine("性别(男、女);");
            //string ss = Console.ReadLine();
            //Console.WriteLine("年龄;");
            //int sage = Convert.ToInt32(Console.ReadLine());

            string con = "server=.;database=xuexi;uid=sa;pwd=123";
            SqlConnection conn = new SqlConnection(con);
            conn.Open();

            SqlCommand oo = new SqlCommand();
            oo.Connection = conn;

           //添加表中的数据
           // oo.CommandText = "insert into xinxi values (‘"+sno+"‘,‘"+sna+"‘,‘"+ss+"‘,"+sage+") ";
           // oo.ExecuteNonQuery();

            /*
            oo.CommandText = "insert into xinxi values (‘s0001‘,‘张三‘,‘男‘,18) "; oo.ExecuteNonQuery();
            oo.CommandText = "insert into xinxi values (‘s0002‘,‘李四‘,‘男‘,19) "; oo.ExecuteNonQuery();
            oo.CommandText = "insert into xinxi values (‘s0003‘,‘王五‘,‘女‘,22) "; oo.ExecuteNonQuery();
            oo.CommandText = "insert into xinxi values (‘s0004‘,‘赵六‘,‘男‘,20) "; oo.ExecuteNonQuery();
            oo.CommandText = "insert into xinxi values (‘s0005‘,‘刘淇‘,‘女‘,21) ";oo.ExecuteNonQuery();
             *
             */


           //修改列表中的内容
           // oo.CommandText = "update xinxi set no=‘"+sno+"‘,name=‘"+sna+"‘,sex=‘"+ss+"‘, age="+sage+" where no=‘" +sno+"‘";
            // oo.ExecuteNonQuery();


            //删除列表中满足条件的数据
           // oo.CommandText = "delete from xinxi where no=‘"+sno+"‘";
           //oo.ExecuteNonQuery();
           
            conn.Close();
            Console.ReadLine();
        }
    }
}

 

************************************************

 

 

 

 



四、读取器类:——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.登录。

*********************************************************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    class Class1
    {
        public static void Main1111(string[] args)
        {
            //输入
            Console.WriteLine("请输入验证账号密码:");
            Console.WriteLine("账号:");
            string xid= Console.ReadLine();
            Console.WriteLine("密码:");
            string xpwd = Console.ReadLine();


            //查询
            string a = "server=.;database=xuexi;uid=sa;pwd=123";
            SqlConnection conn = new SqlConnection(a);

            conn.Open();

            SqlCommand con = conn.CreateCommand();//初始化下方的 ExecuteReader
            con.CommandText = "select * from login where sid=‘"+xid+"‘ and spwd=‘"+xpwd+"‘";
            SqlDataReader dr = con.ExecuteReader();
            if (dr.HasRows)
            { Console.WriteLine("OK"); }
            else
            { Console.WriteLine("Error"); }

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

*********************************************************
2.读取显示表中的所有的数据。

 

*****************************************************************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    class Class2
    {
        public static void Main(string[] args)
        {
            //查询输出信息
            string mmm = "server=.;database=xuexi;uid=sa;pwd=123";
            SqlConnection con = new SqlConnection(mmm);
            con.Open();
            SqlCommand conn = con.CreateCommand();
            conn.CommandText = "select * from xinxi";
            SqlDataReader dr = conn.ExecuteReader();

            while (dr.Read())
            {
                Console.WriteLine(dr["no"].ToString()+dr["name"].ToString()+dr["sex"].ToString()+dr["age"].ToString());
            }
            con.Close();
            Console.ReadLine();
        }
    }
}

*********************************************************************


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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。