实例

更新记录

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

(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 sName=@userName where ID=@userId";
//新建命令对象
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个按钮单击事件中,程序代码分别实现对应的数据更新操作,这些操作前面都进行了详细的讲解,这里不再赘述。

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

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

    数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键 ...

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

    ADO.NET 代码综合示例 前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源. 以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库 ...

  3. c# 窗体开发4 数据库访问技术

    ADO.NET的名称起源于ADO(ACTIVEX DATA OBJECTS) USING SYSTEM; USING SYSTEM.COLLECTIONS.GENERIC; USING SYSTEM. ...

  4. 数据库访问技术 odbc dao rdo uda jet oledb

    一.UDA(UniversalDataAccess) 这是微软提供的通用数据访问策略.包括ADO.OLEDB和ODBC.它不光提供了数据库的访 问能力,对于其它的数据存储技术也同样支持,如目录服务.E ...

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

    综合示例 说明:前面介绍了那么多,光说不练假把式,还是做个实例吧. 表:首先你要准备一张表,这个自己准备吧.我们以学生表为例. 1.ExecuteScalar方法 ExecuteScalar方法执行返 ...

  6. C#与数据库访问技术总结(十七)

    使用DataSet对象访问数据库 当对DataSet对象进行操作时,DataSet对象会产生副本,所以对DataSet里的数据进行编辑操作不会直接对数据库产生影响,而是将DataRow的状态设置为ad ...

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

    DataSet对象 DataSet对象可以用来存储从数据库查询到的数据结果,由于它在获得数据或更新数据后立即与数据库断开,所以程序员能用此高效地访问和操作数据库. 并且,由于DataSet对象具有离线 ...

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

    DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...

  9. C#与数据库访问技术总结(十四)之DataAdapter对象

    DataAdapter对象 DataAdapter对象主要用来承接Connection和DataSet对象. DataSet对象只关心访问操作数据,而不关心自身包含的数据信息来自哪个Connectio ...

随机推荐

  1. 设置input 内容居中显示 .

    text-align:center  水平居中显示 <style type="text/css"> input.text{text-align:center;paddi ...

  2. C#语法灵活运用之排列组合算法

    今天群里有朋友求一个排列组合算法,题目是给定长度,输出所有指定字母的组合. 如指定字母a.b.c.d.e.f,长度为2,则结果应为:aa.ab.ac ... ef.ff. 有朋友给出算法,很有特色: ...

  3. Spring MVC常见的三种URL请求参数的处理

    //方法1:@RequestParam //url:/test1?id=123 @RequestMapping(value = "/test1",method = RequestM ...

  4. 关于git新建本地分支与远程分支关联问题

    背景 新建本地分支并推送到远端后,当前分支没有与远端分支关联,每次推送都需要填写一堆信息. 操作 git branch --set-upstream-to=origin/20160928 切换到本地分 ...

  5. 自定义ImageView回调实现手动改变圆环大小

    //-----------------自定义MyView继承Imageview------------------------------- package com.bw.yuanhuan; impo ...

  6. Log4j基本用法----日志级别

    基本使用方法: Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN.INFO.DEBUG,分别用来指定这条日志信 ...

  7. cocos2d-x 之 CCArray 的遍历(3)

    cocos2d-x中CCArray的遍历,需要几个宏.现代C++程序设计建议尽量不要使用宏,所以数组的遍历也可以自己写. 但cocos2d-x官方已经提供了几个方便数组遍历的几个宏,用好了,能方便许多 ...

  8. windows all version - 实现指定路径共享

    调用API函数NetShareAdd()将文件夹设置为共享,调用此函数后如果不做其他设置,网络用户是无法访问共享文件夹的,因为此文件夹在NTFS分区中,同时受到NTFS文件系统的访问控制,因此还需要第 ...

  9. 框架的 总结(nop)------添加功能

    一.添加功能 1.首先需要在前端显示界面View视图中添加 <div class="pull-right"> <a href="@Url.Action( ...

  10. 【转】supervisor安装与配置

    1.安装 宿主机环境:(Centos7) 宿主机环境 #yum install python-setuptools yum install python-setuptools#easy_install ...