C#&SQL 第二课 执行简单增删改操作

ADO.net访问数据库的方式

解析1

  1. 连接数据库用 Connection
  2. 执行SQL语句 Command
  3. 执行完毕后将结果一条一条的返回 DataReader

解析2

使用DataAdapte+DataSet,这种方法本质还是通过 Connection、Command、DataReader

将数据全部取出来,放到 DataSet 中

连接SQL Server

  • 连接字符串:程序通过连接字符串 指定要连接哪台服务器上的、哪个实例的哪个数据库、用什么用户名和密码。
  • ADO.net中通过SqlConnection类创建到SQL Server的连接,SqlConnection代表一个数据库的连接,ADO.net中的连接等资源都实现了 IDisposable接口,可以使用using进行资源管理。执行备注中的代码如果成功了 就 OK
  •  Connection 的 StateChange 事件
  • 操作SQL Server 数据库使用 SqlCommand对象,SqlCommand 表示向服务器提交的一个命令(SQL语句等),CommandText 属性为要执行的SQL语句。
  • 创建SqlCommand对象
  1. 通过 new 关键字创建
  2. 通过 IDbConnection.CreateCommand()方法创建(编写通用代码的时候用(多态))
  3. 常用的三个方法

01 ExecuteNonQuery() 执行对数据的增删改,返回影响行数,适合:insert、delete、update(对于其它语句返回 -1)

02 ExecuteScalar() 执行查询,返回首行首列

03 ExecuteReader() 执行查询,返回DataReader 对象

(*)StatementCompleted 事件

每条SQL语句执行完毕后触发

多条语句同时执行(用分号隔开),如何获取每条语句所影响的行数?//实际返回值为每条语句影响的行数的和。

代码分享

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace _03连接数据库实现增删改和简单查询
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //向TblPerson表插入一条记录
            //1.连接数据库

            //连接字符串
            string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";

            //创建连接对象
            using (SqlConnection con = new SqlConnection(constr))
            {
                //打开数据连接
                //如果con对象是其他地方传递过来的一个对象,则在打开之前最好做判断con.State
                con.Open();

                //向表中插入一条数据
                //先构建一个sql语句
                string sql = string.Format("insert into TblPerson(uname, uage, uheight) values('{0}',{1},{2})", "黄林", 18, 175);

                //执行sql语句需要一个"命令对象"
                //创建一个命令对象
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {

                    //这里要执行insert语句所以用ExecuteNonQuery()方法。
                    //通过调用该方法就会将insert语句交给数据库引擎来执行
                    //这个方法的返回值是一个int类型,表示当前Sql语句执行后所影响的行数。
                    int r = cmd.ExecuteNonQuery();
                    Console.WriteLine("成功插入了{0}", r);


                    #region SqlCommand对象常用的3个方法。

                    //执行sql语句
                    //cmd.ExecuteNonQuery() //当执行insert,delete,update语句时,一般使用该方法


                    //当执行返回单个值的sql语句时使用该方法。
                    //cmd.ExecuteScalar()


                    //当执行Sql语句返回多行多列时,一般使用该方法。
                    //cmd.ExecuteReader()
                    #endregion

                }


            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //把Id是41的删除
            string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";
            using (SqlConnection con = new SqlConnection(constr))
            {
                string sql = string.Format("delete from TblPerson where autoId={0}", 41);
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    //尽可能晚的打开连接
                    con.Open();
                    int r = cmd.ExecuteNonQuery();
                    //使用完毕后尽可能早的关闭连接
                    con.Close();
                    Console.WriteLine("删除了{0}行。", r);
                }
            }
            MessageBox.Show("ok");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //更新操作
            string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";
            using (SqlConnection con = new SqlConnection(constr))
            {
                string sql = string.Format("update TblPerson set uname='{0}' where autoId={1}", "许正龙", 40);
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    con.Open();
                    int r = cmd.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("更新了" + r + "行。");
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/funiyi/article/details/82809970
今日推荐