使用sqlhelper的简单增删改查
一:所说的简单的三层构架,就是说没有业务逻辑层,将各层没有放到单独的项目中,解决方案如下:
二:form1.cs的详细代码
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace product
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- /// <summary>
- /// 插入一条数据
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button1_Click(object sender, EventArgs e)
- {
- product p= new product();
- p.Name="红马車";
- //p.Number=50;
- // p.Price=5165;
- p.C_id = ;
- productDAL.insertInfor(p);
- }
- /// <summary>
- /// 获得所有信息的总条数
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button2_Click(object sender, EventArgs e)
- {
- int result= productDAL.getInforNum();
- MessageBox.Show(result.ToString());
- }
- /// <summary>
- /// 删除指定id的一条数据
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button3_Click(object sender, EventArgs e)
- {
- productDAL.delectInfor();
- }
- /// <summary>
- /// 查询指定id的这条信息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button4_Click(object sender, EventArgs e)
- {
- product p = new product();
- p= productDAL.getInfor();
- MessageBox.Show(p.C_id+p.Name+p.Number);
- }
- }
- }
三:product.cs的详细代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace product
- {
- public class product
- {
- public int Id {get;set; }
- public string Name{get;set;}
- public decimal? Price{get;set;}//decimal数据库中,对应vs里的decimal
- public int? Number{get;set;}
- public int C_id{set;get;}
- }
- }
四:productDAL.cs的详细代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data.SqlClient;
- using System.Data;
- using System.Windows.Forms;
- namespace product
- {
- public static class productDAL
- {
- /// <summary>
- /// 方法:将vs里的可空类型转换为数据库认识的可空类型
- /// </summary>
- /// <param name="value"></param>
- /// <returns></returns>
- static object toDbValue(object value)
- {
- if (value == null)
- return DBNull.Value;//数据库的空值类型
- else
- return value;
- }
- /// <summary>
- /// 方法:将数据库的可空类型转换为vs认识的可空类型
- /// </summary>
- /// <param name="value"></param>
- /// <returns></returns>
- static object fromDbValue(object value)
- {
- if (value == DBNull.Value)
- return null;//vs里的空值类型
- else
- return value;
- }
- /// <summary>
- /// 增加一条数据
- /// </summary>
- public static void insertInfor(product produ)
- {
- sqlhelper.ExecuteNon(@"insert into product(name,price,number,c_id)values(@name,@price,@number,@c_id)",
- new SqlParameter("@name",produ.Name),
- new SqlParameter("@price",toDbValue( produ.Price)),
- new SqlParameter("@number",toDbValue( produ.Number)),
- new SqlParameter("@c_id", produ.C_id));//添加用values,不用value.(@"insert into product(name,price,number,c_id)values(@name,@price,@number,@c_id)"加上@能识别换行符和空格,增加了字符串的长度
- }
- /// <summary>
- /// 返回信息的总条数
- /// </summary>
- /// <returns></returns>
- public static int getInforNum()
- {
- //int result = sqlhelper.ExecuteNon("select * from product" );
- //select * from product和select count(*) from product都是没有受影响的行数
- //select count(*) from product用数据库查询就是一个行数,所以返回首行首列就可以了
- int result = sqlhelper.ExecuteSca("select count(*) from product");//这里本来是两个参数,那个长度可变参数可以不赋值
- return result;
- }
- /// <summary>
- /// 删除指定id的这条数据
- /// </summary>
- /// <param name="id"></param>
- public static void delectInfor(int id)
- {
- sqlhelper.ExecuteNon("delete product where id=@id",
- new SqlParameter("@id",id));//delete,不要写成delect
- }
- /// <summary>
- /// 查询指定id的这条数据
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- public static product getInfor(int id)
- {
- DataTable table= sqlhelper.datatable("select * from product where id=@id",
- new SqlParameter("@id",id));
- if (table.Rows.Count <= )
- return null;//没有找到这个id的数据,返回null
- else if (table.Rows.Count > )
- throw new Exception("id重复了");
- else
- {
- product pro = new product();
- DataRow row = table.Rows[];
- pro.Name = (string)row["name"];
- pro.Price = (decimal?)fromDbValue(row["price"]);//表里是可空类型的用double?
- pro.Number = (int?)fromDbValue(row["number"]);
- pro.C_id = (int)row["c_id"];
- return pro;
- }
- }
- }
- }
五:sqlhelper.cs的详细代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using System.Data.SqlClient;
- using System.Configuration;
- namespace product
- {
- public static class sqlhelper
- {
- static SqlConnection conn;
- static SqlCommand cmd;
- /// <summary>
- /// 返回受影响的行数
- /// </summary>
- private readonly static string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
- public static int ExecuteNon(string sql,params SqlParameter[] parameter )
- {
- using (conn = new SqlConnection(constr))
- {
- conn.Open();
- using (cmd = conn.CreateCommand())
- {
- cmd.CommandText = sql;
- cmd.Parameters.AddRange(parameter);
- int result = cmd.ExecuteNonQuery();
- return result;
- }
- }
- }
- /// <summary>
- ///返回结果的首行首列
- /// </summary>
- /// <param name="sql"></param>
- /// <param name="parameter"></param>
- /// <returns></returns>
- public static int ExecuteSca(string sql, params SqlParameter[] parameter)
- {
- using (conn = new SqlConnection(constr))
- {
- conn.Open();
- using (cmd = conn.CreateCommand())
- {
- cmd.CommandText = sql;
- cmd.Parameters.AddRange(parameter);
- int result = (int) cmd.ExecuteScalar();
- return result;
- }
- }
- }
- /// <summary>
- /// 返回一个数据流
- /// </summary>
- /// <param name="sql"></param>
- /// <param name="parameter"></param>
- /// <returns></returns>
- public static object SqldataRea(string sql, params SqlParameter[] parameter)
- {
- using (conn = new SqlConnection(constr))
- {
- conn.Open();
- using (cmd = conn.CreateCommand())
- {
- cmd.CommandText = sql;
- cmd.Parameters.AddRange(parameter);
- SqlDataReader sdr= sdr=cmd.ExecuteReader();
- return sdr;
- }
- }
- }
- /// <summary>
- /// 返回一个表
- /// </summary>
- /// <param name="sql"></param>
- /// <param name="parameter"></param>
- /// <returns></returns>
- public static DataTable datatable(string sql, params SqlParameter[] parameter)
- {
- using (conn = new SqlConnection(constr))
- {
- conn.Open();
- using (cmd = conn.CreateCommand())
- {
- cmd.CommandText = sql;
- cmd.Parameters.AddRange(parameter);
- SqlDataAdapter sda = new SqlDataAdapter(cmd);
- DataSet ds = new DataSet();
- sda.Fill(ds);
- return ds.Tables[];
- }
- }
- }
- }
- }
使用sqlhelper的简单增删改查的更多相关文章
- ado.net的简单数据库操作(三)——简单增删改查的实际应用
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...
- Redis:五种数据类型的简单增删改查
Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...
- 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...
- Mybatis实现简单增删改查
Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...
- Android_ADB 常用 shell命令 和 sqlite3 简单增删改查
今天学习了一个ADB的常用命令.接下来简单使用几个常用ADB shell 命令. 首先我们得明白什么是adb.exe ADB -Android Debug Bridge, 是 Android sdk ...
- sqlhelper sqlparameter 实现增删改查
这是sqlHelper.cs类,类内里封装了方法 using System; using System.Collections.Generic; using System.Linq; using Sy ...
- MyBatis之二:简单增删改查
这一篇在上一篇的基础上简单讲解如何进行增删改查操作. 一.在mybatis的配置文件conf.xml中注册xml与注解映射 <!-- 注册映射文件 --> <mappers> ...
- 基于springmvc的简单增删改查实现---中间使用到了bean validation
package com.kite.controller; import java.util.HashMap; import java.util.Map; import javax.validation ...
- JDBC实现简单增删改查
JDBC全称为:Java Data Base Connectivity (java数据库连接),主要用于java与数据库的链接. 整个链接过程如下图: 1.数据库驱动:Driver 加载mysql驱动 ...
随机推荐
- javascript 定时器使用
定时器的使用场合 setInterval() 方法,按照指定的周期(以毫秒记)来调用函数或计算表达式setInterval() 方法会不停的调用函数,知道 clearInterval() 被调用或窗口 ...
- raw socket遇上windows
最近很长一段时间内又捡起了大学时丢下的网络协议,开始回顾网络协议编程,于是linux系统成了首选,它让我感到了无比的自由,可以很通透的游走于协议的各层. 最初写了个ARP欺骗程序,很成功的欺骗了win ...
- ios 设置label的高度随着内容的变化而变化
好吧 步骤1:创建label _GeRenJianJie = [[UILabel alloc]init]; 步骤2:设置label _GeRenJianJie.textColor = RGBAColo ...
- Angularjs中编写指令模版
angular.module('moduleName', []).directive( 'namespaceDirectiveName', [ function() { return { restri ...
- LICAppInfo
[Common] Enabled=true All=true [AppList] #AppName #Enabled #Validit ...
- adodb配置与使用
=========================================php100:80:ADODB PHP数据库万能引擎类 ADODB PHP数据库介绍与特点 ADODB 是一种兼容的各 ...
- 一次 php nusoap 调试过程
今天跟同事调用一个数据api ,用soap方式调用.本以为很简单的事情,却弄到了晚上. 因为有过调试经验,直接按照以往的过程直接部署,结果是错误. 1. 以为是调用方式错了,问了一下对接的同事,没问题 ...
- 基于Lua的清除类游戏算法
最近在开发游戏,用Lua语言.习惯了其它的语言,然后对Lua的一些语法很不习惯. 比如table的元素个数的取值,比switch语句等等. 不过没有办法,还是要运用Lua来写游戏的.看来学C++还真的 ...
- PHPExcel导出excel
如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312: $yourStr = mb_convert_encoding("g ...
- IOS 项目名称修改(XCODE4.6)
最近为了保存苹果商店已有版本软件,打算重新上传一个程序,与原来的软件仅样式不同.在修改网plist文件中的名称后,archive时报错了,结果发现时工程名称没有修改到.下面就与大家分享下修改已有项目名 ...