C#与数据库访问技术总结(九)之实例

  

实例

更新记录

在本例子中,建立一个供用户输入学生学号和姓名的文本框和几个对应不同操作类型的更新信息按钮,当用户输入信息以后单击相应的按钮则执行相应的操作。在此实例中还将接触到服务器信息验证的相关知识。

(1)新建名为UpdateTest的Windows Application应用程序,在默认的Forml.cs中添加2个Label控件,2个TextBox控件,3个Button控件,按表4.7所示设置这7个控件的属性。

表4.7控件属性


控件类型                    ID属性                          Text属性


标签                         lblUserID                 学号:

标签                         lblUserName               姓名:

文本框                       txtUserlD

文本框                       txtUserName

按钮                         btnExecute1                拼接字符串

按钮                         btnExecute2                使用参数

按钮                         btnExecute3                使用存储过程

  (2)调整控件的位置(按照个人喜好了)

(3)双击“拼接字符串”按钮,注册按钮btnExecute的按钮单击事件btnExecute1_Click,

    然后再切换到Form1.cs页面的“设计”视图,依次双击“使用参数”和“使用存储过程”按钮来注册对应的按钮单击事件btnExecute2_Click和btnExecute3_Click。

(4)在Form1.cs文件中首先引入命名空间System.Data.SqlClient,然后添加一个名 CheckInfo的方法,返回值为bool类型,代码如下:

 

bool CheckInfo()
{
  //判断学号是否输入
  if (this.txtUserID.Text.Trim() == "")
  {
    Alert("学号不完整");
    return false;
  }
  else if (this.txtUserName.Text.Trim() == "") //判断姓名是否输入
  {
    Alert("姓名不完整");
    return false;
  }
  //信息检查通过
  return true;
}
//其中,Alert是自定义的另外一个方法,用来弹出一个对话框,定义如下:
        void Alert(string message)
        {
            MessageBox.Show(null, message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        //在btnExecute1_Click中编写如下代码:
        private void btnExecute1_Click(object sender, EventArgs e)
        {
            //信息检查
            if(this.CheckInfo())
            {
                //取值
                string userId=this.txtUserID.Text.Trim();
                string userName=this.txtUserName.Text.Trim();
                //新建连接对象
                SqlConnection conn=new SqlConnection();
                conn.ConnectionString="Data Source=(local);Initial Catalog=Student;Integrated Security=SSPI";
                //拼接命令字符串
                string updateQuery="update StudentInfo set sName=‘"+userName+"‘"+"where ID=‘"+userId+"’";
                //新建命令对象
                SqlCommand cmd=new SqlCommand(updateQuery,conn);
                conn.Open();
                 //保存执行结果
                int RecordsAffected=cmd.ExecuteNonQuery();
                conn.Close();
                //提示结果
                Alert("更新数据数为"+RecordsAffected);
            }
        }
        //在btnExecute2_Click中编写如下代码:
        private void btnExecute2_Click(object sender, EventArgs e)
        {
            //信息检查
            if(this.CheckInfo())
            {
                //取值
                string userId=this.txtUserID.Text.Trim();
                string userName=this.txtUserName.Text.Trim();
                //新建连接对象
                SqlConnection conn=new SqlConnection();
                conn.ConnectionString="Data Source=(local);Initial Catalog=Student;Integrated Security=SSPI";
                //拼接命令字符串
                string updateQuery="update StudentInfo set [email protected] where [email protected]";
                //新建命令对象
                SqlCommand cmd=new SqlCommand(updateQuery,conn);
                //添加参数
                cmd.Parameters.Add(new SqlParameter("@userName", userName));
                cmd.Parameters.Add(new SqlParameter("@userId", userId));
                conn.Open();
                //保存执行结果
                int RecordsAffected = cmd.ExecuteNonQuery();
                conn.Close();
                /*
                try
                {
                    conn.Open();
                    //保存执行结果
                    int RecordsAffected = cmd.ExecuteNonQuery();
                }
                catch (Exception err)
                {
                    MessageBox.Show(err.Message, "修改记录失败");
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }*/
                //提示结果
                Alert("更新数据数为"+RecordsAffected);
            }
        }
        //在btnExecute3_Click中编写如下代码:
        private void btnExecute3_Click(object sender, EventArgs e)
        {
            //信息检查
            if (this.CheckInfo())
            {
                //取值
                string userId = this.txtUserID.Text.Trim();
                string userName = this.txtUserName.Text.Trim();
                //新建连接对象
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = "Data Source=(local);Initial Catalog=Student;Integrated Security=SSPI";
                //新建命令对象
                SqlCommand cmd = new SqlCommand("UpdateStudentInfo", conn);
                //指定命令类型为存储过程
                cmd.CommandType = CommandType.StoredProcedure;
                 //添加参数
                cmd.Parameters.Add(new SqlParameter("@userName", userName));
                cmd.Parameters.Add(new SqlParameter("@userId", userId));
                conn.Open();
                //保存执行结果
                int RecordsAffected = cmd.ExecuteNonQuery();
                conn.Close();
                //提示结果
                Alert("更新数据数为" + RecordsAffected);
            }
        }

  (9)在学号和姓名中分别输入信息以后,单击任意按钮即可测试更新结果。
  例如:

  分别输入学号"2007102001"和姓名“某某”后单击任意按钮.

代码讲解
  在引入了System.Data.SqlClient命名空间以后,使用了SQL Server .NET数据提供程序对数据进行更新。
  更新数据前使用了CheckInfo方法对数据进行检查,查看用户是否在姓名和学号两个文本框中输入了有效的信息,如果两者的输入信息都有效,则该方法返回true,否则返回false,

  方法实现如下:  

          //判断学号是否输入
            if (this.txtUserID.Text.Trim() == "")
            {
                Alert("学号不完整");
                return false;
            }
            else if (this.txtUserName.Text.Trim() == "")  //判断姓名是否输入
            {
                Alert("姓名不完整");
                return false;
            }
            //信息检查通过
            return true;

  当用户输入的信息不正确时,Checklnfo将调用Alert方法显示提示信息对话框,

  Alert方法实际上是固定MessageBox.Show方法的一些参数,利用其来弹出对话框,Alert方法实现非常简单,仅仅需要下面一句代码:  

MessageBox.Show(null,message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

  其中,message是Alert方法接受的参数。

  在3个按钮单击事件中,程序代码分别实现对应的数据更新操作,这些操作前面都进行了详细的讲解,这里不再赘述。

时间: 2024-10-11 08:30:36

C#与数据库访问技术总结(九)之实例的相关文章

ADO.NET数据库访问技术

ADO.net:数据库访问技术程序操作的数据都是变量或对象,这些东西都存在于内存中但是有很多的数据是存在数据库中的,数据库中的数据存在于硬盘上 作用:将数据库中的数据取到内存中来,可以让程序进行操作 将内存中的数据,写入到数据库中 1.using System.Data.SqlClient; //引用命名空间 2.建立 数据库连接类 string str = "server=.;database=Data0515;user=sa;pwd=123;";//连接字符串 SqlConnect

C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看

数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键关系 2.创建新的C#项目,创建 数据库连接类 与 数据库操作方法 a.引用数据库 using System.Data.SqlClient;    b.创建数据库连接类:先进行编写连接字符串,在实例化连接类 c.创建数据库操作方法(此处不是实例化类)    d.打开数据库 → 执行操作 → 关闭数据

数据库访问技术之JDBC

在了解JDBC之前呢,我们可以先对ODBC做一个回顾,以便于更好的理解JDBC.看名字也知道这两个关系不一般,他们实现了同样的功能,为应用程序连接和操作数据库提供支持.所以,我们先从ODBC开始. ODBC ODBC(Open Database Connectivity)是开放数据库互连的简称,是一种使用SQL的应用程序接口.它是一系列的规范和对数据库访问的API.那么API+SQL就可以执行对数据库的操作.它是不依赖于DBMS的,即通过ODBC可以以相同的方式连接大部分数据库.它包括了应用程序

C#与数据库访问技术总结(十八)

ADO.NET 代码综合示例 前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源. 以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库的一般步骤,而且说明了使用不同种类的ADO.NET组件集合访问数据库的一般步骤. 可以通过代码进一步了解这两种数据提供者访问方式的异同之处. 使用OLE DB.NET  Provider OLE DB的数据提供者可以访问Access和SQL等数据库,代码如下: //设置连接字符串 string db

C#与数据库访问技术总结(七)综合示例

综合示例 说明:前面介绍了那么多,光说不练假把式,还是做个实例吧. 表:首先你要准备一张表,这个自己准备吧.我们以学生表为例. 1.ExecuteScalar方法 ExecuteScalar方法执行返回单个值的命令.例如,如果想获取Student数据库中表studentInfo的学生的总人数,则可以使用这个方法执行SQL查询: Select count(*) from studentInfo . (1) 建立Windows Application 应用程序 (2) 在Form1上添加一个按钮Bu

ADO.NET(数据库访问技术)

[ADO.net结构]: ADO.NET用于访问和操作数据库的两个主要组件是:.NET Framework 数据提供程序和DataSet. a..NET Framework数据提供程序:是专门为数据操作设计的组件,用于处理不同的数据源,支持访问特定的数据库.执行SQL命令和检索结果. b..NET Framework数据提供程序包含4个核心对象:  Connection:(连接)建立与特定数据源的连接:   Command:(命令)对数据源执行命令:   DataReader:( 数据读取)从数

C#与数据库访问技术总结(五)之Command对象的常用方法

Command对象的常用方法 说明:上篇总结了Command对象的几个数据成员,这节总结Command对象的常用方法. 同样,在不同的数据提供者的内部,Command对象的名称是不同的,在SQL Server Data Provider里叫SqlCommand,而在OLE DB Data Provider里叫OleDbCommand. 下面将详细介绍Command类型对象的常用方法,包括构造函数.执行不带返回结果集的SQL语句方法.执行带返回结果集的SQL语句方法和使用查询结果填充DataRea

C#与数据库访问技术总结(十六)之 DataSet对象

DataSet对象 DataSet对象可以用来存储从数据库查询到的数据结果,由于它在获得数据或更新数据后立即与数据库断开,所以程序员能用此高效地访问和操作数据库. 并且,由于DataSet对象具有离线访问数据库的特性,所以它更能用来接收海量的数据信息. DataSet对象概述 DataSet是ADO.NET中用来访问数据库的对象. 由于其在访问数据库前不知道数据库里表的结构,所以在其内部,用动态XML的格式来存放数据.这种设计使DataSet能访问不同数据源的数据. DataSet对象本身不同数

C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例

DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data source=localhost;uid=sa;pwd=aspent;database=LOGINDB" string sqlstr=" select * from USER "; //利用构造函数,创建DataAdapter SqlDataAdapter da=new Sql