C#--ADO对于数据库的操作(Sqlcommmand、SqlConnection、Sqldatareader、SqlDataAdapter、Dataset

命名空间 System.Data.SqlClient的主要类:
SqlCommand
SqlConnection
SqlDataAdapter
SqlDataReader

一、Sqlcommmand的用法

关于Sqlcommmand的方法

属性

说明

ActiveConnection设定要透过哪个连接对象下命令
CommandBehavior设定Command对象的动作模式
CommandType(Text\TableDirect\StoredProcedure)命令类型(SQL语句,完整表达句,存储过程)
CommandText要下达至数据源的命令
CommandTimeout出错时等待时间
Parameters参数集合
RccordsAffected受影响的记录数
个人感觉 Sqlcommmand一般与Sqldatareader结合来实现对数据库的数据读取,Sqlcommmand相当于对数据库发送请求

样例代码:

        private static void  Only_Sqldatareader()
        {
            SqlConnection  cn1 = new SqlConnection("server=.\\SQLEXPRESS;database=test3;uid=zy;pwd=123456");
            cn1.Open();
            string sql1 = "select * from test";
            SqlCommand cmd1 = new SqlCommand(sql1, cn1);
            //cmd1.Parameters();可以添加形参的传递

            SqlDataReader dr = cmd1.ExecuteReader();
            while (dr.Read())
            {
                Console.WriteLine("这是ID={0}", dr[0].ToString());
                Console.WriteLine("这是专业={0}", dr[1].ToString());
            }
        }
二、SqlConnection---对于数据库的连接

Sqlserver数据库连接方式有多种,这里只介绍最常用的通过SqlConnection和Sqlserver数据库用户名和密码验证来进行操作数据库。数据库连接有两种方法一种是windows的登陆模式另一种是sqlserver的登陆模式


数据库连接字符串:
string connString = "data source=119.180.261.117,1433;initial catalog=anxiuyun;user id=sa;pwd=sa";
这里data source 是指数据库地址和端口号,需要注意的是地址和端口号之间是用","进行分隔的;initial catalog 是数据库名字 ;user id和pwd分别指用户名和密码。
 String ConnectionString =”server=(local); Initial Catalog =stu;  ”;
 SqlConnection conn=new SqlConnection(); 
  conn.ConnectionString=ConnectionString;
   conn.Open();

Open和Close方法分别用来打开和关闭数据库连接无参无返回值

Open方法:使用ConnectionString所指定的属性设置打开数据库连接

Close方法:关闭与数据库的连接,这是关闭任何打开连接的首选方法

如果不知道Connection对象在某个时候是打开是关闭时,可以检查Connection对象的State属性

三、Sqldatareader

类似于指针的形式读取数据库里面的记录,通过与Sqlcommmand结合,通过while来进行数据的遍历输出

代码

  /// <summary>
        /// 时间:2018-1-27
        /// 内容:运用Sqlcommmand来进行数据库数据的插入数据,同样的通过sql语句来进行对数据库的增删查改
        /// </summary>
        /// <param name="cn"></param>
        /// <param name="sql"></param>
        private static void  Command_with_Sqldatareader(out SqlConnection cn, out string sql)
        {
            string myconnection = "server=.\\SQLEXPRESS;database=test3;uid=zy;;pwd=123456";//这是注释--连接数据库的过程
            cn = new SqlConnection(myconnection);
            cn.Open();
            //sql语句的实现
              sql = "insert into test values(1234,'信息计算111')";//sql语句的实现
           string sql_thrid = "delete from test where 专业='信息计算111'";
           string sql_fourth = "seelct *from test";
           string sql_5 = "update test set 专业='信息计算'where ID=1";

            SqlCommand cmd = new SqlCommand(sql, cn);//对数据库发送请求
            try//try catch 的结构
            {
                if (cmd.ExecuteNonQuery() == 1)//返回请求影响 的行数
                {
                    Console.WriteLine("成功\n");
                }
                else
                {
                    Console.WriteLine("失败\n");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            finally//最后关闭连接
            {
                cn.Close();
            }
            Console.Read();
        }
四、SqlDataAdapter-

相当于Dataset与数据库的桥梁,首先SqlDataAdapter通过与sql语句结合读取数据库的信息,然后再填充到Dataset中去。

直接样例代码:

 private static void Dataset_with_DataAdapter()
        {/*连接数据库的语句*/
            SqlConnection cn1 = new SqlConnection("server=.\\SQLEXPRESS;database=test3;uid=zy;pwd=123456");//sql登陆模式
            /*打开连接*/
            cn1.Open();
            /*查询语句*/
            string sql1 = "select *from test";
            
            /*对数据源进行处理*/
            SqlDataAdapter sda = new SqlDataAdapter(sql1, cn1);
            /*填充到dataset容器中*/
            DataSet c = new System.Data.DataSet();
            sda.Fill(c, "tabel");
            //1对于dataset 含有多种表的情况,遍历每一个表
            foreach (DataTable table in c.Tables)
            {
                foreach (DataRow row in table.Rows)
                {
                    foreach (object field in row.ItemArray)
                    {
                        Console.WriteLine(field);
                    }
                    //相应的行处理
                }
                //相应的表处理
            }
            //2对于特定的表来进行遍历
            foreach (DataRow mDr in c.Tables[0].Rows)
            {
                foreach (DataColumn mDc in c.Tables[0].Columns)
                {  /*输出语句*/
                    Console.WriteLine(mDr[mDc].ToString());
                }
            }
            //try catch结构,对Dataset里面的内容进行修改并重新写会数据库
            try
            {
                //修改特定的数据
                c.Tables[0].Rows[0][1] = "信息学院";
               /* //删除Dataset里面的特定行
                c.Tables[0].Rows.RemoveAt(1);
                //删除Data里面的特定的列
                c.Tables[0].Columns.RemoveAt(1);
                */
                SqlCommandBuilder cmdBld = new SqlCommandBuilder(sda);
                //重新写回数据库的语句
                sda.Update(c.Tables[0]);
                Console.Read();
            }
            catch (Exception x)
            {
                Console.WriteLine(x);

            }
            finally
            {
                cn1.Close();
            }
        }
五、Dataset的使用

 DataSet类:表示数据在内存中的缓存,对应于一个关系数  据库的结构。由一组DataTable对象组成。
  DataTable类:表示内存中数据的一个表,对应于数据库中的表,由若干行和列组成。
  DataRow类:表示DataTable中的一行数据,对应于数据库中表的一行。
  DataColumn类:表示DataTable中列的结构,对应于数据库中表的一列。
  DataRelation类:表示两个DataTable对象之间的关联,如父/子关系,此关系类似于主键/外键关系。
  Constraint类:表示可在一个或多个DataColumn对象上强制的约束。约束是用于维护DataTable中数据的完整性的规则。
   其他类:如DataColumnCollection、 ConstraintCollection、
DataTableCollection、
DataRelationCollection等。 














  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值