C#数据库——数据库基本操作

ExecuteNonQuery方法、ExecuteScalar方法、ExecuteReader方法的区别

----ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进行操作(如记录的增加、删除和更新),那么方法将返回操作所影响的记录条数。

----ExecuteScalar():执行命令对象的SQL语句,如果SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略其他的行 和列。该方法所返回的结果为object类型,在使用之前必须强制转换为所需的类型。如果SQL语句不是SELECT查询,则返回结果没有任何作用。

----ExecuteReader():执行命令对象的SQL语句,在ADO.NET中,就是DataReader对象的ExecuteReader()方法来进行数据的列出,并且我们用这个ExecuteReader()方法来显示数据是最快的一种方法,因为当我们在用ExecuteReader()方法中的DataReader 对象来进行数据的在网站建设中显示时,他只可以一条一条向前读,不能返回,也就是像ASP中的ADO方法中的Recordset 对象的Movenext一样,它没有move -1这样的返回方法。

读取方式一:executereader方式读取数据,具有时效性,只读,具有较高的读取效率

//说明:程序代码中data source 表示运行数据库对应的计算机名,initial catalog表示所使用的数据库名。uid为指定的数据库用户名,pwd为指定的用户口令。
            //sa登录方式,data source表示服务器地址,initial catalog表示数据库名字,user id表示账号名,pwd表示账号密码。
            string constr = "data source=.;initial catalog=QPMES_DEV;user id=sa;pwd=sa";
            //创建新的SQL链接
            SqlConnection con = new SqlConnection(constr);
            //创建SQL语句
            string sql = "select * from Test_LEO_PC";
            //创建数据库命令
            SqlCommand com = new SqlCommand(sql, con);
            try
            {
                //打开数据库
                con.Open();

                //executereader的方式读取数据库数据,这种方式读取数据快
                SqlDataReader myReader;

                //执行数据库数据
                myReader = com.ExecuteReader();
                
                //逐行读取数据        
                while (myReader.Read())
                    {
                        Console.WriteLine("名字是{0},年龄是{1},地址是{2}", myReader.GetString(0), myReader.GetInt32(1), myReader.GetString(2));
                        //resultData.Add(new DataLink() { Name = myReader.GetString(0), Age = myReader.GetInt32(1), Address = myReader.GetString(2) });
                    }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                con.Close();
            }

读取方式二:通过dataset设置数据库,其中DataSet会创建一个本地数据表,SqlDataAdapter用来操作本地数据库,并与服务器数据库进行交互,当建立本地数据表并调用Fill()函数填充数据表后,可以关闭与数据库服务器的连接,当操作完成后,再建立连接把本地数据库更新到服务器中。

SqlDataAdapter有两个有用的方法,分别为 fill 和 update。下面分别来介绍这两方法。

  1. fill 方法
      fill 方法是用来填充 DataSet 的。也就是,把数据库中的运送到C#空间。fill 有13个重载的方法,在使用时可以根据情况选择使用。使用 FillSchema,让 SqlDataAdapter 创建DataSet 的架构,并在用数据填充它之前就将主键信息包括进去。

  2. update 方法
      update 方法是用来更改数据库的。也就是,把C#内存中修改的内容同步到数据库中。更新是逐行进行的。对于插入、修改和删除,Update 方法会自动确定类型(Insert、Update 或 Delete)。

        static void Main(string[] args)
        {
            //说明:程序代码中data source 表示运行数据库对应的计算机名,initial catalog表示所使用的数据库名。uid为指定的数据库用户名,pwd为指定的用户口令。
            string constr = "data source=.;initial catalog=QPMES_DEV;user id=sa;pwd=sa";

            SqlConnection con = new SqlConnection(constr);

            string sql = "select * from Test_LEO_PC";

            SqlCommand com = new SqlCommand(sql, con);

            try
            {
                con.Open();

                //创建SqlDataAdapter对象
                SqlDataAdapter da = new SqlDataAdapter();

                //设置命令语句
                da.SelectCommand = com;

                //设置数据库
                DataSet ds = new DataSet();

                //创建一张名称为“try”的表,并通过fill方法把所有数据导入表中。
                da.Fill(ds, "try");

                //读取数据的方式,通过遍历的方式,遍历行DataRow和列DataColumn。
                foreach(DataRow mDr in ds.Tables[0].Rows)
                {
                    Console.WriteLine("{0},{1},{2}", mDr[0], mDr[1], mDr[2]);
                }
                
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                con.Close();
            }
        }

dataset的update功能demo

        conn = new SqlConnection(connStr);
        //打开数据库连接
        conn.Open();
        string sql = "select * from userinfo";
        //创建SqlDataAdapter类的对象
        SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
        //创建DataSet类的对象
        DataSet ds = new DataSet();
        //使用SQLDataAdapter对象sda将查询结果填充到DataTable对象ds中
        sda.Fill(ds);
        //创建SqlCommandBuilder类的对象
        SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(sda);
        //创建DataRow类的对象
        DataRow dr = ds.Tables[0].NewRow();
        //设置name列的值
        dr["name"] = textBox1.Text;
        //设置password列的值
        dr["password"] = textBox2.Text;
        //向DataTable对象中添加一行
        ds.Tables[0].Rows.Add(dr);
        //更新数据库
        sda.Update(ds);

补充关键点:
1、声明sqldataadapter的几种方法
https://blog.csdn.net/gatieme/article/details/20695853
2、遍历dataset表的几种方法
https://www.cnblogs.com/hailexuexi/p/5323967.html
3、数据库的基本概念和面试题
https://www.cnblogs.com/wenxiaofei/p/9853682.html

原文地址:https://www.cnblogs.com/LY-CS/p/13223969.html