• C#连接SQL Server数据库(二)


    执行SQL语句:Command对象

    1.Command对象概述

      Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的SQL语句。Command对象主要有以下几种方式。
        SqlCommand:用于向SQL Server数据库发送SQL语句,位于System.Data.SqlClient命名空间。
        OleDbCommand:用于向使用OLEDB公开的数据库发送SQL语句,位于System.Data.OleDb命名空间。例如,Access数据库和MySQL数据库都是OLEDB公开的数据库。
        OdbcCommand:用于向ODBC公开的数据库发送SQL语句,位于System.Data.Odbc命名空间。有些数据库如果没有提供相应的连接程序,则可以配置好ODBC连接后,使用OdbcCommand。
        OracleCommand:用于向Oracle数据库发送SQL语句,位于System.Data.OracleClient命名空间。

    2.设置数据源类型

      Command对象有3个重要的属性,分别是Connection、CommandText和CommandType。Connection属性用于设置SqlCommand使用的SqlConnection。CommandText属性用于设置要对数据源执行的SQL语句或存储过程。CommandType属性用于设置指定CommandText的类型。CommandType属性的值是CommandType枚举值,CommandType枚举有3个枚举成员,分别介绍如下。
        StoredProcedure:存储过程的名称。
        TableDirect:表的名称。
        Text:SQL文本命令。
      如果要设置数据源的类型,则可以通过设置CommandType属性来实现。

    3.执行SQL语句

      Command对象需要取得将要执行的SQL语句,通过调用该类提供的多种方法,向数据库提交SQL语句。下面详细介绍SqlCommand对象中的几种执行SQL语句的方法。

      1.ExecuteNonQuery方法
      执行SQL语句,并返回受影响的行数,在使用SqlCommand向数据库发送增、删、改命令时,通常使用ExecuteNonQuery方法执行发送的SQL语句。

            private void button1_Click(object sender, EventArgs e)
            {
                string connString = "server=.;database=denglu;uid=test;pwd=test;connect timeout=5";
                SqlConnection sqlconn = new SqlConnection(connString);
                sqlconn.Open();
    
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Connection = sqlconn;
                sqlcmd.CommandText = "update Users set password=888 where username='哈哈哈'";
                sqlcmd.CommandType = CommandType.Text;
    
                //int i = Convert.ToInt32(sqlcmd.ExecuteNonQuery()); //ExecuteNonQuery返回受影响的行数
                //MessageBox.Show(i.ToString());
            }
    

      2.ExecuteReader方法
      执行SQL语句,并生成一个包含数据的SqlDataReader对象的实例。
      代码:

            private void button1_Click(object sender, EventArgs e)
            {
                string connString = "server=.;database=denglu;uid=test;pwd=test;connect timeout=5";
                SqlConnection sqlconn = new SqlConnection(connString);
                sqlconn.Open();
    
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Connection = sqlconn;
                sqlcmd.CommandText = "select password from users";
                sqlcmd.CommandType = CommandType.Text;
    
                //使用ExecuteReader方法实例化一个SqlDataReader对象
                SqlDataReader sdr = sqlcmd.ExecuteReader();
                while (sdr.Read())
                {
                    listView1.Items.Add(sdr[0].ToString());
                }
    
                sqlconn.Dispose();
                button1.Enabled = false;
            }
    

      界面:

      3.ExecuteScalar方法   执行SQL语句,返回结果集中的第一行的第一列   代码: ``` SqlConnection sqlConnection; private void Form2_Load(object sender, EventArgs e) { string connString = "server=.;database=TBWRIMS;uid=test;pwd=test;connect timeout=5"; sqlConnection = new SqlConnection(connString); sqlConnection.Open(); }
        private void btn1_Click(object sender, EventArgs e)
        {
            try
            {
                if (sqlConnection.State == ConnectionState.Open || txt1.Text != "")
                {
                    SqlCommand sqlCommand = new SqlCommand(); //***
                    sqlCommand.Connection = sqlConnection; //设置Connection属性
                    sqlCommand.CommandText = "select count(*) from" + txt1.Text.Trim(); // 设置CommandText属性,以及SQL语句
                    sqlCommand.CommandType = CommandType.Text; //设置CommandType属性为Text,使其只执行SQL语句
    
                    int i = Convert.ToInt32(sqlCommand.ExecuteScalar()); //使用ExecuteScalar方法获取指定数据表中的数据数量                   
                    lab2.Text = "数据表中共有:"+ i.ToString() + "条数据";
    
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    
    &emsp;&emsp;<b>界面:</b>
    <center><img src="https://img2018.cnblogs.com/blog/1849125/202001/1849125-20200131160758181-363282996.png" width="400" height="150"></center>
  • 相关阅读:
    cookie的设置、获取和删除封装
    原生javascript封装ajax和jsonp
    javascript模块化应用
    图解javascript this指向什么?
    学习bootstrap心得
    javascript使用两个逻辑非运算符(!!)的原因
    dubbo小教程
    JSTL与EL表达式(为空判断)
    自己整理的常用SQL Server 2005 语句、
    python基础:迭代器、生成器(yield)详细解读
  • 原文地址:https://www.cnblogs.com/xggbest/p/12245299.html
Copyright © 2020-2023  润新知