实例

更新记录

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

(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. MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法

    环境:linux,mysql5.5.21 错误:Host is blocked because of many connection errors; unblock with 'mysqladmin ...

  2. 驱动开发学习笔记. 0.01 配置arm-linux-gcc 交叉编译器

    驱动开发读书笔记. 0.01 配置arm-linux-gcc 交叉编译器 什么是gcc: 就像windows上的VS 工具,用来编译代码,具体请自己搜索相关资料 怎么用PC机的gcc 和 arm-li ...

  3. URLConnection 和 HttpClients 发送请求范例

    . java.net.URLConnection package test; import java.io.BufferedReader; import java.io.IOException; im ...

  4. Json在前台与后台之间的使用

     一.将前台数据,使用ajax中的post.get传到后台 $.ajax({ type: 'post', url: 'your url', data: $("form").seri ...

  5. WPF错误:当前上下文中不存在名称“InitializeComponent”

    当修改一个View的名称为VCFCView.xaml的时候,一定要记得在内部x:Class也要修改为XXXX.VCFCView,否则会报错误(图三) 当前上下文中不存在名称"Initiali ...

  6. AppcompatActivity闪退问题解决方案

    apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0. ...

  7. 常用UML模型简要小结

    关系: 关联(组合,生命周期相同:聚合,物以类聚),依赖,泛化(继承),实现 还有 包含,细化复用已有用例:扩展,非必要主要的用例 图: 1.用例图:就是描述一个功能场景(集合),其实用例编写(前后置 ...

  8. autoresizingMask的用法

    UIViewAutoresizingNone = , UIViewAutoresizingFlexibleLeftMargin = << , UIViewAutoresizingFlexi ...

  9. 专题:mdadm Raid & LVM

    >FOR FREEDOM!< {A} Introduction Here's a short description of what is supported in the Linux R ...

  10. Django跑起来

    1.  安装python 2.  安装pip 3.  安装dj 4.  配置dj 5.  建立dj  web app 6.  开始项目 打算写这篇文章,先把目录写上