ADO.NET复习——自己编写SqlHelper类
今天复习了一次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类的更多相关文章
- 使用C#编写SqlHelper类
无聊的周末,学习.编码无力.想找点事干但又不知道干点什么,猛然发现自己学过的SqlHelper快忘记了.于是乎虎躯一震心想怎能如此堕落下去,立马打开电脑,双手摸上键盘.写下此文作为学习过程中的复习,并 ...
- c#中sqlhelper类的编写(二)
上一篇文章讲了简易版的SqlHelper类的编写,我们在这里就上一篇文章末尾提出的问题写出解决方案. sql语句注入攻击已经是众所周知的了.我们如何在C#中保护自己的数据库不被这样的方式攻击呢? 不用 ...
- c#中sqlhelper类的编写(一)
在.net平台的项目开发中,凡是用到数据库交互的,都有必要了解SqlHelper类的原理. 步骤一: 我就拿WPF项目开发作为例子.首先要新建一个App.config(应用程序配置文件).注意,在VS ...
- 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类
在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...
- 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...
- 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 ...
- 实现如下类之间的继承关系,并编写Music类来测试这些类。
实现如下类之间的继承关系,并编写Music类来测试这些类. package com.hanqi.test; public class Instrument { //输出弹奏乐器 public void ...
- 最新的SqlHelper 类
最新的SqlHelper 类 摘自:http://www.cnblogs.com/sufei/archive/2010/01/14/1648026.html using System; using S ...
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...
随机推荐
- C# 绘图对象 流对象 响应对象关系
- Alignment ( 最长上升(下降)子序列 )
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 11397 Accepted: 3630 Description In t ...
- COJ 0288 路径(2015升级版)
路径(2015升级版) 难度级别:D: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 WZJ在生日当天决定在他的领地举行一场马拉松比赛,他的 ...
- ural-1099-Work Scheduling(裸带花树)
题意: 有N个人,有限对的人可以在一起工作,问最多能有多少对. 分析: 任意图的最大匹配 // File MAXName: 1099.cpp // Author: Zlbing // Created ...
- SharePoint Server 2007 Enterprise Key
正式版 key SN: Tkjcb-3wkhk-2ty2t-qymk2-9xm2y 这个版本也是通过Key来区分是否是测试版还是正式版的 也就是说你输入正式版的Key他就是正式版,输入Enterpri ...
- Python文件中文编码问题
读写中文 需要读取utf-8编码的中文文件,先利用sublime text软件将它改成无DOM的编码,并且在第一行写: # encoding: utf-8 然后用以下代码: with codecs.o ...
- maven profile实现多环境打包
快速解决: 项目目录 1.pom文件中添加profile <profiles> <profile> <!-- 本地开发环境 --> <id>dev< ...
- Xamarin开发教程如何使用Xamarin开发Android应用
Xamarin开发教程如何使用Xamarin开发Android应用 如何使用Xamarin开发Android应用 在了解了Xamarin和Andriod系统之后,下面我们需要了解一下如何使用这些工具和 ...
- C语言判断系统数据大/小端存储方式
小端存储:数据的低位部分,存储于存储器的低地址空间里. 大端存储:数据的低位部分,存储于存储器的高地址空间里. 首先,一般PC数据存储方式是小端存储. 基本实现思想是:将存储器中所存的数据按字节以地址 ...
- raw_input() 与 input()的区别
raw_input和input两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互.但他们的功能不尽相同.下面举两个例子,来说明两者 raw_input和input两个均是 pyth ...