今天复习了一次ADO.NET基础,整理一下自己的认为的重点:

编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法。现在大多数公司面试的时候,给你的面试题都会要你自己手写一个SqlHelper的类,这考的是自己的基本功,如果一个根基不牢固的开发人员,你写的代码肯定好不到哪里去。

下面是SqlHelper的演示代码,一定要熟练:

 public static SqlHelper
{
//这里定义一个字符串变量,把数据库连接字符串赋值给它,也可以把连接字符串添加到配置文件,这样整个项目可以方便访问,这里为了清楚直接赋值到字符串变量
static string connStr = "Data Source=127.0.0.1\\SQL2012; Initial Catalog=Test;User ID=test;Password=test"; //执行查询语句并返回一个内存中的数据表
public DataTable ExecuteDataTable(string sql,params SqlParameter[] parameters)
//因为不确定SQL语句的参数有几个,所以使用了长度可变参数,但必须放到后面
{ using (SqlConnection conn = new SqlConnection(connStr))//到数据库的连接
{
conn.Open();//打开数据库连接
using (SqlCommand cmd = conn.CreateCommand())//创建执行对象
{
cmd.CommandText = sql;//给cmd赋值SQL语句
cmd.Parameters.AddRange(parameters);//把SQL语句参数添加到cmd
DataSet dataset = new DataSet();//新建DataSet对象,用于保存查询结果
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//把执行cmd,更新数据结果到adapter对象
adapter.Fill(dataset);//adapter对象的Fill方法把结果添加到DataSet对象中
return dataset.Tables[];//返回一个查询结果的一个表
}
}
} //执行查询语句返回结果集合的第一行第一列
public Object ExecuteScalar(string sql,params SqlParameter[] parameters)
{
using(SqlConnection conn = new SqlConnection(connStr))//到数据库的连接
{
conn.Open();//打开数据库连接
using(SqlCommand cmd = conn.CreateCommand())//创建执行对象
{
cmd.CommandText=sql;//给cmd赋值SQL语句
cmd.Parameters.AddRange(parameters);//把SQL语句参数添加到cmd
return cmd.ExecuteScalar();//执行查询,返回查询结果的第一行的第一列
}
}
} //执行参数化SQL语句,返回受影响的行数
public int ExecuteNonQuery(string sql,params SqlParameter[] parameters)
{ using (SqlConnection conn = new SqlConnection(connStr))//到数据库的连接
{
conn.Open();//打开数据库连接
using(SqlCommand cmd= conn.CreateCommand())//创建执行对象
{
cmd.CommandText= sql;//给cmd赋值SQL语句
cmd.Parameters.AddRange(parameters);//添加SQL语句中的参数
return cmd.ExecuteNonQuery();//执行数据库语句并返回受影响的行数
}
}
}
}

二、上面的SqlHelper类创建好了我们就可以在项目里面调用了,下面演示调用代码:

调用SqlHerlper类E的方法插入数据:

     class Program
{
static void Main(string[] args)
{
//输入数据
Console.WriteLine("请输入要保存到数据库的名字:");
string name = Console.ReadLine();
Console.WriteLine("请输入年龄:");
int age = Console.ReadLine(); //调用ExecuteNonQuery(string sql,params SqlParameter[] parameters)函数,用于将获取的的数据插入到数据库
int rows = sqlhelper.ExecuteNonQuery("insert into T_Test(Name,Age) vaules(@Name,@Age)", new SqlParameter("@Name", name), new SqlParameter("@Age", age)); Console.WriteLine("成功插入{0}条数据", rows);//显示执行结果
Console.ReadKey();
} }

删除数据

       class Program
{
static void Main(string[] args)
{
string name = "张三"; int result = sqlhelper.ExecuteNonQuery("delete from T_Test where Name=@Name", new SqlParameter("@Name", name));//删除名字叫张三的数据
Console.WriteLine("成功删除{0}数据.", result); Console.ReadKey();
}
}

查询数据

1. 创建一个winform窗体,放一个控件dataGridView

2.在窗体的载入事件中添加调用SqlHelper类的方法,并把结果赋值到dataGridView,代码如下:

          private void Form1_Load(object sender, EventArgs e)
{
//在窗体的载入事件中添加调用SqlHelper类的方法,并把结果赋值到dataGridView
dataGridView1.DataSource = sqlhelper.ExecuteDataTable("select Name from T_Test");
}

3.运行窗体,显示的结果就是从数据库查询到的数据了

这是我今天复习过的觉得是的重点,虽然很菜啊,这是我第一次写带有代码的博客,自己终于走出这一步,自己以后也会多写博客,分享自己学习中的点点滴滴。

大神不要喷哈......

ADO.NET复习——自己编写SqlHelper类的更多相关文章

  1. 使用C#编写SqlHelper类

    无聊的周末,学习.编码无力.想找点事干但又不知道干点什么,猛然发现自己学过的SqlHelper快忘记了.于是乎虎躯一震心想怎能如此堕落下去,立马打开电脑,双手摸上键盘.写下此文作为学习过程中的复习,并 ...

  2. c#中sqlhelper类的编写(二)

    上一篇文章讲了简易版的SqlHelper类的编写,我们在这里就上一篇文章末尾提出的问题写出解决方案. sql语句注入攻击已经是众所周知的了.我们如何在C#中保护自己的数据库不被这样的方式攻击呢? 不用 ...

  3. c#中sqlhelper类的编写(一)

    在.net平台的项目开发中,凡是用到数据库交互的,都有必要了解SqlHelper类的原理. 步骤一: 我就拿WPF项目开发作为例子.首先要新建一个App.config(应用程序配置文件).注意,在VS ...

  4. 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

    在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...

  5. 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...

  6. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  7. 实现如下类之间的继承关系,并编写Music类来测试这些类。

    实现如下类之间的继承关系,并编写Music类来测试这些类. package com.hanqi.test; public class Instrument { //输出弹奏乐器 public void ...

  8. 最新的SqlHelper 类

    最新的SqlHelper 类 摘自:http://www.cnblogs.com/sufei/archive/2010/01/14/1648026.html using System; using S ...

  9. 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释

    在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...

随机推荐

  1. AltiumDesigner导入AutoCAD文件DXF,DWG格式

    最近有个朋友给了个AutoCAD的文件,需要我画个板子,结构什么的参见AutoCAD的文件,百度了下,得知protel是可以导入AutoCAD的DXF,DWG格式的文件的,那么AltiumDesign ...

  2. Expanding Rods(二分)

    Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10287   Accepted: 2615 Description When ...

  3. bzoj3191

    其实这是一个约瑟夫问题的变种首先我们先处理这样一个问题已知n个人,编号0~n-1,每k人干掉一个,问最后留下来的是谁当n,k非常大的时候,模拟是不行的,这时候我们考虑重编号第1次退出的肯定是肯定是编号 ...

  4. COJ 2105 submatrix

    submatrix 难度级别: A: 编程语言:不限:运行时间限制:2000ms: 运行空间限制:131072KB: 代码长度限制:102400B 试题描述   小A有一个N×M的矩阵,矩阵中1~N* ...

  5. [Poetize II]太鼓达人

    描述 Description 鼓的主要元件是M个围成一圈的传感器.每个传 感器都有开和关两种工作状态,分别用1和0表示.显然,从不同的位置出发沿顺时针方向连续检查K个传感器可以得到M个长度为K的01串 ...

  6. 【动态规划】Vijos P1493 传纸条(NOIP2008提高组第三题)

    题目链接: https://vijos.org/p/1493 题目大意: 二取方格数,从(1,1)向下或向右走到(n,m)走两次,每个走到的格子值只能被取一次所能取到的最大值. (n,m<=50 ...

  7. 使用vs2010编译 Python \ SIP \ PyQt4

    (1)先使用vs2010编译 Python http://www.cnblogs.com/fortwo/archive/2013/04/16/3023871.html 注意,若编译的为debug版的P ...

  8. vijos1891 学姐的逛街计划(线性规划)

    P1891学姐的逛街计划 描述 doc 最近太忙了, 每天都有课. 这不怕, doc 可以请假不去上课.偏偏学校又有规定, 任意连续 n 天中, 不得请假超过 k 天. doc 很忧伤, 因为他还要陪 ...

  9. POJ 2376 贪心

    题意:FJ希望它的牛做一些清洁工作.有N只牛和T个时间段,每只牛可以承担一段时间内的工作.FJ希望让最小数量的牛覆盖整个T,求出其数量.若无法覆盖整个T,则输出-1. 分析:首先要注意T表示T个时间段 ...

  10. ios中键值编码kvc和键值监听kvo的特性及详解

    总结: kvc键值编码  1.就是在oc中可以对属性进行动态读写(以往都是自己赋值属性)           2. 如果方法属性的关键字和需要数据中的关键字相同的话                  ...