0
点赞
收藏
分享

微信扫一扫

c#与数据库

代码敲到深夜 2022-03-30 阅读 57

ADO.NET介绍

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

连接数据库

//连接数据库的步骤
            //1、创建连接字符串
            //string constr = @"Data Source=DESKTOP-FAVDBP3\MSSQLSERVER2014;INITIAL CATALOG=TestSchool;integrated Security=true";  //windows身份连接

            //string constr = @"Data Source=DESKTOP-FAVDBP3\MSSQLSERVER2014;Initial Catalog=TestSchool;User ID=123;Password=123";  // 用户名和密码验证

            string constr = @"Server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool  ";  //之前的老方法使用用户名和密码连接


            //2、创建连接对象
            SqlConnection con = new SqlConnection(constr);

            //测试,打开连接
            //3、打开连接
           
            
            con.Open();
            Console.WriteLine("打开连接成功");


            //4、关闭连接,释放资源
            con.Close();
            Console.WriteLine("关闭连接,释放资源");
            Console.ReadLine();

通过ado.net向表中插入一条数据

 //通过ado.net向表中插入一条数据
            string constr = @"server=desktop-favdbp3\mssqlserver2014;user=123;pwd=123;database=testschool";
            sqlconnection con = new sqlconnection(constr);

            //4、编写sql语句
            string sql = "insert into tblscore values('吱吱',78,87)";

            //5、创建一个执行sql语句的对象(命令对象)sqlcommand
            sqlcommand cmd = new sqlcommand(sql, con);//在con连接上执行sql语句

            //3、打开连接(最晚打开,最早关闭,节省资源)
            con.open();//

            //6、开始执行sql语句(有三个类型)
            //executenonquery()只有在执行insert、delete、update时返回受影响的行数,执行任何其他sql语句时永远返回-1
            int r = cmd.executenonquery(); //一般当执行insert\delete\update语句时
            //cmd.executescalar(); //当执行返回单个结果时
            //cmd.executereader(); //当查询出多行多列结果时

            console.writeline("成功插入了{0}行数据", r);
            console.readkey();

删除一行数据

string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
            SqlConnection con = new SqlConnection(constr);
            string sql = "delete from TblScore where Id=6";
            SqlCommand cmd = new SqlCommand(sql, con);
            con.Open();
            int r=cmd.ExecuteNonQuery();
            Console.WriteLine("成功删除{0}行数据",r);
            Console.ReadKey();

修改数据

string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
            SqlConnection con = new SqlConnection(constr);
            string sql = "update TblScore set math=math-5,English=English-10 where Id=1 ";
            SqlCommand cmd = new SqlCommand(sql, con);
            con.Open();
            int r = cmd.ExecuteNonQuery();
            Console.WriteLine("修改了{0}条数据", r);
            Console.ReadKey();

数据查询

string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
            SqlConnection con = new SqlConnection(constr);
            string sql = "select count(*) from TblScore";
            SqlCommand cmd = new SqlCommand(sql, con);
            con.Open();
            //object count=cmd.ExecuteScalar(); 
            object count = Convert.ToInt32(cmd.ExecuteScalar()); //会避免出错
            Console.WriteLine("TblScore表中一共有{0}条数据", count);
            Console.ReadKey();

SqlDataReader使用

  • 方法一
string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
            SqlConnection con = new SqlConnection(constr);
            string sql = "select * from TblStudent";
            SqlCommand cmd = new SqlCommand(sql, con);
            con.Open();
            //通过调用ExcuteReader()方法,将给定的sql语句在服务器端执行
            //执行完毕后,服务器端就已经查询出了数据。但是数是保存在数据库服务器的内存当中,
            //并没有返回给应用程序,知识返回给应用程序一个reader对象,这个对象就是用来获取数据的对象。
            SqlDataReader reader = cmd.ExecuteReader();
            //接下来就要通过reader对象一条一条获取数据
            //1.在获取数据之前,先判断一下本次执行查询后,是否查询到数据
            if(reader.HasRows)//如果有数据。则为true,否则为false
            {
                //2.如果有数据,那么接下来就要一条一条获取数据
                //每次获取数据之前,都要先调用reader.Read()方法,向后移动到一条数据
                //如果成功移动到了某条数据之上,则返回true,否则返回false
                while(reader.Read())
                {
                    //获取当前reader指向的数据
                    //reader.FieldCount,可以获取当前查询语句查询出的列的个数
                    for (int i = 0; i < reader.FieldCount;i++)
                    {
                        //当遇到数据库中的null值时,通过reader.GetValue()或reader[]索引器来获取列的值,
                        //拿到的是DBNull.Value,不是C#的null,而DBNull.Value的ToString()方法是返回空字符串,所以没有报错。
                        //但是通过reader[]索引器,可以使用列名来获取列的值
                        Console.Write(reader[i] + "    ");
                        //Console.WriteLine(reader["Id"]);

                        //GetValue()只能通过索引来获取列的值
                        //Console.WriteLine(reader.GetValue(i) + "   ");

                        //根据列名称获取列的索引
                        //reader.GetOrdinal();

                        //通过下面方法得到的是数据表中的类型,不是object类型,使用方便
                        //reader.Getxxxxxx();//使用强类型读取列中的数据。
                    }
                    Console.WriteLine();
                }

            }
            else
            {
                Console.WriteLine("没有查询到任何数据");
            }
            Console.ReadLine();
  • 方法二:强制类型读取数据
string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
            SqlConnection con = new SqlConnection(constr);
            string sql = "select * from TblStudent";
            SqlCommand cmd = new SqlCommand(sql, con);
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows)
            {
                //注意:通过reader.Getxxx()方式来获取表中的数据,如果数据为null那么就报异常。
                //此时需要手写代码来判断数据是否为null
                while (reader.Read())
                {
                    //Id,Name,Gender,Address,Age
                    Console.Write(reader.GetInt32(0) + "\t\t");
                    Console.Write(reader.GetString(1) + "\t\t");
                    Console.Write(reader.GetString(2) + "\t\t");
                    Console.Write(reader.IsDBNull(3) ? "NULL\t\t" : reader.GetString(3) + "\t\t");
                    Console.Write(reader.IsDBNull(4) ? "NULL\t\t" : reader.GetInt32(4) + "\t\t");
                    Console.WriteLine();
                }
            }
            Console.ReadKey();
举报

相关推荐

0 条评论