zoukankan      html  css  js  c++  java
  • 连接数据库--小练---简单增删改

    数据访问:——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 Main(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.完善插入功能,在插入之前,判断一下学号是否已存在。如果已存在就提示报名,不存在就插入进去。

  • 相关阅读:
    【编程题目】左旋转字符串 ☆
    360測试开发笔试题(2016内推)
    start_kernel——boot_cpu_init及PER_CPU
    UVa 10673
    【面试】-Java基础知识
    Navgationcontroller 的pop
    别拿接口不当开发
    C++基础学习教程(三)
    安卓版微信自带浏览器和IE6浏览器ajax请求abort错误处理
    【动态树问题】LCT学习笔记
  • 原文地址:https://www.cnblogs.com/xianshui/p/4477226.html
Copyright © 2011-2022 走看看