当前位置: 首页 > news >正文

WinForm+ADO.net应用(一)

目标:
什么是ADO.NET Connection对象
Command对象
DataReader对象
Demo
什么是ADO.NET:
ADO.NET是Microsoft最新推出的数据访问技术,由Microsoft ActiveX Data Objects (ADO)改进而来。
Connection对象:
Connection对象表示与数据源之间的连接。可通过它的各种不同属性指定数据源的类型、位置以及其他属性,可用它来与数据库建立连接或断开连接。我们常用的方式为直接在其构造方法中将数据库链接字符串当做参数,并实例出对象。
Connection对象的方法 :
Open()方法 用于打开数据库连接
Close()方法 用于关闭数据库连接
Command对象:
在数据源上执行的SQL语句或存储过程。命令包含向数据库提交的信息,并且由SQLCommand等特定于提供程序的类来实现。命令可以是存储过程调用、UPDATE语句以及返回结果的语句等。
Command对象的方法 :
ExecuteNonQuery()方法 用于执行INSERT、DELELE、UPDATE等语句并返回受影响的行数。
ExecuteReader ()方法 用于返回只读的结果集
ExecuteScalar()方法 用于返回执行结果的第一行第一例的值
DataReader对象:
DataReader从数据源中读取只进且只读的数据流。 注意:一般不需要直接创建SqlDataReader对象或OleDbDataReader对象,而是通过调用SqlCommand对象或OleDbCommand对象的ExecuteReader()方法来获取这些对象。
DataReader对象的方法:
Close()方法:关闭SqlDataReader对象
Read()方法:使SqlDataReader对象移到下一条记录上
GetName()方法:获取指定列的名称
GetValue()方法:以本地格式返回指定列的值
例:
  未命名-1 (图1)
 
通过上图1,我们可以看的出是要为数据库里增加用户的姓名及密码,编号为自动生成。但是在窗体加载的时候,在下拉列表中,要加载俱所有的用户列表,方便将来的查询时选择用户。
那么当我们把界面设计好之后,首先要做的事情是要与数据库链接,并实现我们想要的操作。以下就是俱体的实现步骤:
1.在项目中,新建一个类文件命名为DataBase.cs
2.在DataBase文件中的头部引入命名空间using System.Data.SqlClient,当然,我这是在操作SQL数据库,如果要操作Access数据库则需要引用入using System.Data.OleDb。
3.接下来就要在类的内部申明一个私有的字段,用来做为数据库的连接对象。如:
private SqlConnection conn = new SqlConnection(@"server=.;database=qq;uid=sa;pwd=sa");
看以上代码,我们应用到了 Connection对象,在实列此对象时,需要在构造函数中写入连接字符串,用来告知连接对象要连接的数据库的服务器名,数据库名,用户名,及密码。
4.跟着我们将此字段重构封装为属性,代码如下:
protected SqlConnection Conn
        {
            get { return conn; }
        }
目的是为了让Conn的访问性更加灵活。
未命名-2 图2
5.然后跟据建好的用户表Users表图2,建立一个相对应的类Users.cs 用来做Users表中所有的增删改查等操作。打开类文件后,同样要引入命名空间System.Data.SqlClient。然后使用Users类继承Database类。如:
class Users:DataBase
    {
    }
6.在Users类中,写增删改查的方法:
/// <summary>
/// 本方法是用来做添加操作的
/// </summary>
/// <param name="name">方法要求用户名</param>
/// <param name="pwd">方法要求密码</param>
/// <returns></returns>
public int Add(string name,string pwd)
{
    string strSql = "insert into users(username,userpwd)values('"+name+"','"+pwd+"')";
    Conn.Open();//打开数据库连接
    SqlCommand cmd = new SqlCommand(strSql, Conn);//创建cmd执行对象
    int i = cmd.ExecuteNonQuery();//使用执行对象cmd的方法ExecuteNonQuery()返回受影响行数。
    Conn.Close();//关闭数据库连接
    return i;//返回i
}
/// <summary>
/// 本方法是用来做删除操作的
/// </summary>
/// <param name="id">方法要求ID</param>
/// <returns></returns>
public int Delete(int id)
{
    string strSql = "delete from users where id="+id;
    Conn.Open();//打开数据库连接
    SqlCommand cmd = new SqlCommand(strSql, Conn);//创建cmd执行对象
    int i = cmd.ExecuteNonQuery();//使用执行对象cmd的方法ExecuteNonQuery()返回受影响行数。
    Conn.Close();//关闭数据库连接
    return i;//返回i
}
/// <summary>
/// 本方法是用来做更新操作的
/// </summary>
/// <param name="id">方法要求ID</param>
/// <returns></returns>
public int Update(int id,string name,string pwd)
{
    string strSql = "update users set username='"+name+"',userpwd='"+pwd+"' where id=" + id;
    Conn.Open();//打开数据库连接
    SqlCommand cmd = new SqlCommand(strSql, Conn);//创建cmd执行对象
    int i = cmd.ExecuteNonQuery();//使用执行对象cmd的方法ExecuteNonQuery()返回受影响行数。
    Conn.Close();//关闭数据库连接
    return i;//返回i
}
/// <summary>
/// 查询用户列表
/// </summary>
/// <returns></returns>
public ArrayList ListArray()
{
    string strSql = "select username from users";
    ArrayList array = new ArrayList();//创建ArrayList对象
    SqlCommand cmd = new SqlCommand(strSql, Conn);//创建cmd执行对象
    Conn.Open();//打开数据库连接
    SqlDataReader dr = cmd.ExecuteReader();//使用执行对象cmd的方法ExecuteReader()执行SQL语句并返回结果集
    while (dr.Read())//遍历所有结果集
    {
        array.Add(dr.GetValue(0));//取到结果集索引的第0列的值并添加到ArrayList对象中
    }
    Conn.Close();//关闭数据库连接
    return array;//返回ArrayList对象
}
 
7.打开设计界面,在类中将Users类实例化为对象u如:Users u = new Users(),双击窗体标题栏,进入窗体加载事件所调用的方法。并写代码如下:
private void Form2_Load(object sender, EventArgs e)

    foreach (string str in u.ListArray())//遍历所有的Users类中ListArray方法所返回的ArrayList的值
    {
        comboBox1.Items.Add(str);//将值添加到comboBox中
    }
}
8.返回设计界面双击添加按纽,进入到单击按钮事件所调用的方法写代码如下:
private void button1_Click(object sender, EventArgs e)
{
    if (u.Add(UserName.Text, UserPwd.Text) &gt; 0)//执行u对象中的方法Add()并返回受影响的行数,看是否大于0
    {
        MessageBox.Show("添加成功了!");//如果大于0说明添加成功了,你可以查看一下数据库中的值
    }
    else
    {
        MessageBox.Show("数据出错,请联系管理员!");//否则的话添加失败。
    }
}
然后运行起程序来,添加一个用户试试吧 :)

相关文章:

  • 自制简单的image图片服务器,404原理
  • 统计学图书列表
  • mongodbOperator
  • ASP.NET 进度条(附源代码)
  • mysql数据库参数文件性能调试工具:tuning-primer.sh
  • 你要金婚?还是金色软件?
  • OpenGL三维显示中纹理闪烁和颜色跳变的问题
  • Tom Baeyens谈过程虚拟机
  • 【博客园发文技巧】不离开编辑页面,批量添加图片链接和设置图片大小
  • 治大国若烹小鲜
  • JSONP使用笔记
  • AJAX 中Sys.WebForms.PageRequestManager(ajax请求添加客户端事件)的事件激发顺序
  • 为 IBM Lotus Notes V8 构建复合应用程序(七)
  • Android数据的四种存储方式之SQLite数据库
  • SER+SEMS完全手册
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • AHK 中 = 和 == 等比较运算符的用法
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • ES6语法详解(一)
  • gcc介绍及安装
  • HTML中设置input等文本框为不可操作
  • If…else
  • JS专题之继承
  • MySQL用户中的%到底包不包括localhost?
  • SegmentFault 2015 Top Rank
  • Shadow DOM 内部构造及如何构建独立组件
  • spring boot下thymeleaf全局静态变量配置
  • vue-loader 源码解析系列之 selector
  • WePY 在小程序性能调优上做出的探究
  • 复杂数据处理
  • 关于 Cirru Editor 存储格式
  • 后端_MYSQL
  • 我从编程教室毕业
  • 无服务器化是企业 IT 架构的未来吗?
  • 移动端解决方案学习记录
  • C# - 为值类型重定义相等性
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 数据结构
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (TOJ2804)Even? Odd?
  • (备忘)Java Map 遍历
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (排序详解之 堆排序)
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转) ns2/nam与nam实现相关的文件
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .Net FrameWork总结
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET简谈设计模式之(单件模式)
  • .NET开发者必备的11款免费工具
  • .NET框架类在ASP.NET中的使用(2) ——QA