• 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

  • 相关阅读:
    oracle omf管理 and asm omf
    oracle 9i下载地址
    rac部署过程的任务列表
    oracle connect实例
    cpio.gz文件解压缩方式
    函数remove_constants
    oracle优化日记脚本
    查看oracle隐含参数
    rac笔记
    MotionEvent的getX(),getY()与getRawX(),getRawY()区别
  • 原文地址:https://www.cnblogs.com/LY-CS/p/13223969.html
Copyright © 2020-2023  润新知