一:所说的简单的三层构架,就是说没有业务逻辑层,将各层没有放到单独的项目中,解决方案如下:

二:form1.cs的详细代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace product
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18. /// <summary>
  19. /// 插入一条数据
  20. /// </summary>
  21. /// <param name="sender"></param>
  22. /// <param name="e"></param>
  23. private void button1_Click(object sender, EventArgs e)
  24. {
  25. product p= new product();
  26.  
  27. p.Name="红马車";
  28. //p.Number=50;
  29. // p.Price=5165;
  30. p.C_id = ;
  31. productDAL.insertInfor(p);
  32.  
  33. }
  34. /// <summary>
  35. /// 获得所有信息的总条数
  36. /// </summary>
  37. /// <param name="sender"></param>
  38. /// <param name="e"></param>
  39. private void button2_Click(object sender, EventArgs e)
  40. {
  41. int result= productDAL.getInforNum();
  42. MessageBox.Show(result.ToString());
  43. }
  44. /// <summary>
  45. /// 删除指定id的一条数据
  46. /// </summary>
  47. /// <param name="sender"></param>
  48. /// <param name="e"></param>
  49. private void button3_Click(object sender, EventArgs e)
  50. {
  51. productDAL.delectInfor();
  52. }
  53. /// <summary>
  54. /// 查询指定id的这条信息
  55. /// </summary>
  56. /// <param name="sender"></param>
  57. /// <param name="e"></param>
  58. private void button4_Click(object sender, EventArgs e)
  59. {
  60. product p = new product();
  61. p= productDAL.getInfor();
  62. MessageBox.Show(p.C_id+p.Name+p.Number);
  63.  
  64. }
  65. }
  66. }

三:product.cs的详细代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace product
  7. {
  8. public class product
  9. {
  10. public int Id {get;set; }
  11. public string Name{get;set;}
  12. public decimal? Price{get;set;}//decimal数据库中,对应vs里的decimal
  13. public int? Number{get;set;}
  14. public int C_id{set;get;}
  15.  
  16. }
  17. }

四:productDAL.cs的详细代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data.SqlClient;
  6. using System.Data;
  7. using System.Windows.Forms;
  8.  
  9. namespace product
  10. {
  11. public static class productDAL
  12. {
  13. /// <summary>
  14. /// 方法:将vs里的可空类型转换为数据库认识的可空类型
  15. /// </summary>
  16. /// <param name="value"></param>
  17. /// <returns></returns>
  18. static object toDbValue(object value)
  19. {
  20. if (value == null)
  21. return DBNull.Value;//数据库的空值类型
  22. else
  23. return value;
  24. }
  25. /// <summary>
  26. /// 方法:将数据库的可空类型转换为vs认识的可空类型
  27. /// </summary>
  28. /// <param name="value"></param>
  29. /// <returns></returns>
  30. static object fromDbValue(object value)
  31. {
  32. if (value == DBNull.Value)
  33. return null;//vs里的空值类型
  34. else
  35. return value;
  36. }
  37. /// <summary>
  38. /// 增加一条数据
  39. /// </summary>
  40. public static void insertInfor(product produ)
  41. {
  42. sqlhelper.ExecuteNon(@"insert into product(name,price,number,c_id)values(@name,@price,@number,@c_id)",
  43. new SqlParameter("@name",produ.Name),
  44. new SqlParameter("@price",toDbValue( produ.Price)),
  45. new SqlParameter("@number",toDbValue( produ.Number)),
  46. new SqlParameter("@c_id", produ.C_id));//添加用values,不用value.(@"insert into product(name,price,number,c_id)values(@name,@price,@number,@c_id)"加上@能识别换行符和空格,增加了字符串的长度
  47.  
  48. }
  49. /// <summary>
  50. /// 返回信息的总条数
  51. /// </summary>
  52. /// <returns></returns>
  53. public static int getInforNum()
  54. {
  55. //int result = sqlhelper.ExecuteNon("select * from product" );
  56. //select * from product和select count(*) from product都是没有受影响的行数
  57. //select count(*) from product用数据库查询就是一个行数,所以返回首行首列就可以了
  58. int result = sqlhelper.ExecuteSca("select count(*) from product");//这里本来是两个参数,那个长度可变参数可以不赋值
  59. return result;
  60. }
  61. /// <summary>
  62. /// 删除指定id的这条数据
  63. /// </summary>
  64. /// <param name="id"></param>
  65. public static void delectInfor(int id)
  66. {
  67. sqlhelper.ExecuteNon("delete product where id=@id",
  68. new SqlParameter("@id",id));//delete,不要写成delect
  69.  
  70. }
  71. /// <summary>
  72. /// 查询指定id的这条数据
  73. /// </summary>
  74. /// <param name="id"></param>
  75. /// <returns></returns>
  76. public static product getInfor(int id)
  77. {
  78. DataTable table= sqlhelper.datatable("select * from product where id=@id",
  79. new SqlParameter("@id",id));
  80.  
  81. if (table.Rows.Count <= )
  82. return null;//没有找到这个id的数据,返回null
  83. else if (table.Rows.Count > )
  84. throw new Exception("id重复了");
  85. else
  86. {
  87. product pro = new product();
  88. DataRow row = table.Rows[];
  89.  
  90. pro.Name = (string)row["name"];
  91. pro.Price = (decimal?)fromDbValue(row["price"]);//表里是可空类型的用double?
  92. pro.Number = (int?)fromDbValue(row["number"]);
  93. pro.C_id = (int)row["c_id"];
  94. return pro;
  95. }
  96.  
  97. }
  98. }
  99. }

五:sqlhelper.cs的详细代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using System.Data.SqlClient;
  7. using System.Configuration;
  8.  
  9. namespace product
  10. {
  11. public static class sqlhelper
  12. {
  13. static SqlConnection conn;
  14. static SqlCommand cmd;
  15. /// <summary>
  16. /// 返回受影响的行数
  17. /// </summary>
  18. private readonly static string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
  19. public static int ExecuteNon(string sql,params SqlParameter[] parameter )
  20. {
  21. using (conn = new SqlConnection(constr))
  22. {
  23. conn.Open();
  24. using (cmd = conn.CreateCommand())
  25. {
  26. cmd.CommandText = sql;
  27. cmd.Parameters.AddRange(parameter);
  28. int result = cmd.ExecuteNonQuery();
  29. return result;
  30.  
  31. }
  32. }
  33.  
  34. }
  35.  
  36. /// <summary>
  37. ///返回结果的首行首列
  38. /// </summary>
  39. /// <param name="sql"></param>
  40. /// <param name="parameter"></param>
  41. /// <returns></returns>
  42. public static int ExecuteSca(string sql, params SqlParameter[] parameter)
  43. {
  44. using (conn = new SqlConnection(constr))
  45. {
  46. conn.Open();
  47. using (cmd = conn.CreateCommand())
  48. {
  49. cmd.CommandText = sql;
  50. cmd.Parameters.AddRange(parameter);
  51. int result = (int) cmd.ExecuteScalar();
  52. return result;
  53. }
  54. }
  55. }
  56.  
  57. /// <summary>
  58. /// 返回一个数据流
  59. /// </summary>
  60. /// <param name="sql"></param>
  61. /// <param name="parameter"></param>
  62. /// <returns></returns>
  63. public static object SqldataRea(string sql, params SqlParameter[] parameter)
  64. {
  65. using (conn = new SqlConnection(constr))
  66. {
  67. conn.Open();
  68. using (cmd = conn.CreateCommand())
  69. {
  70. cmd.CommandText = sql;
  71. cmd.Parameters.AddRange(parameter);
  72. SqlDataReader sdr= sdr=cmd.ExecuteReader();
  73.  
  74. return sdr;
  75. }
  76. }
  77. }
  78.  
  79. /// <summary>
  80. /// 返回一个表
  81. /// </summary>
  82. /// <param name="sql"></param>
  83. /// <param name="parameter"></param>
  84. /// <returns></returns>
  85. public static DataTable datatable(string sql, params SqlParameter[] parameter)
  86. {
  87. using (conn = new SqlConnection(constr))
  88. {
  89. conn.Open();
  90. using (cmd = conn.CreateCommand())
  91. {
  92. cmd.CommandText = sql;
  93. cmd.Parameters.AddRange(parameter);
  94. SqlDataAdapter sda = new SqlDataAdapter(cmd);
  95. DataSet ds = new DataSet();
  96. sda.Fill(ds);
  97. return ds.Tables[];
  98. }
  99. }
  100. }
  101. }
  102. }

使用sqlhelper的简单增删改查的更多相关文章

  1. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

  2. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

  3. 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

    专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...

  4. Mybatis实现简单增删改查

    Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...

  5. Android_ADB 常用 shell命令 和 sqlite3 简单增删改查

    今天学习了一个ADB的常用命令.接下来简单使用几个常用ADB shell 命令. 首先我们得明白什么是adb.exe ADB -Android Debug Bridge, 是 Android sdk ...

  6. sqlhelper sqlparameter 实现增删改查

    这是sqlHelper.cs类,类内里封装了方法 using System; using System.Collections.Generic; using System.Linq; using Sy ...

  7. MyBatis之二:简单增删改查

    这一篇在上一篇的基础上简单讲解如何进行增删改查操作. 一.在mybatis的配置文件conf.xml中注册xml与注解映射 <!-- 注册映射文件 --> <mappers> ...

  8. 基于springmvc的简单增删改查实现---中间使用到了bean validation

    package com.kite.controller; import java.util.HashMap; import java.util.Map; import javax.validation ...

  9. JDBC实现简单增删改查

    JDBC全称为:Java Data Base Connectivity (java数据库连接),主要用于java与数据库的链接. 整个链接过程如下图: 1.数据库驱动:Driver 加载mysql驱动 ...

随机推荐

  1. javascript 定时器使用

    定时器的使用场合 setInterval() 方法,按照指定的周期(以毫秒记)来调用函数或计算表达式setInterval() 方法会不停的调用函数,知道 clearInterval() 被调用或窗口 ...

  2. raw socket遇上windows

    最近很长一段时间内又捡起了大学时丢下的网络协议,开始回顾网络协议编程,于是linux系统成了首选,它让我感到了无比的自由,可以很通透的游走于协议的各层. 最初写了个ARP欺骗程序,很成功的欺骗了win ...

  3. ios 设置label的高度随着内容的变化而变化

    好吧 步骤1:创建label _GeRenJianJie = [[UILabel alloc]init]; 步骤2:设置label _GeRenJianJie.textColor = RGBAColo ...

  4. Angularjs中编写指令模版

    angular.module('moduleName', []).directive( 'namespaceDirectiveName', [ function() { return { restri ...

  5. LICAppInfo

    [Common] Enabled=true All=true [AppList] #AppName                       #Enabled            #Validit ...

  6. adodb配置与使用

    =========================================php100:80:ADODB PHP数据库万能引擎类 ADODB PHP数据库介绍与特点 ADODB 是一种兼容的各 ...

  7. 一次 php nusoap 调试过程

    今天跟同事调用一个数据api ,用soap方式调用.本以为很简单的事情,却弄到了晚上. 因为有过调试经验,直接按照以往的过程直接部署,结果是错误. 1. 以为是调用方式错了,问了一下对接的同事,没问题 ...

  8. 基于Lua的清除类游戏算法

    最近在开发游戏,用Lua语言.习惯了其它的语言,然后对Lua的一些语法很不习惯. 比如table的元素个数的取值,比switch语句等等. 不过没有办法,还是要运用Lua来写游戏的.看来学C++还真的 ...

  9. PHPExcel导出excel

    如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312: $yourStr = mb_convert_encoding("g ...

  10. IOS 项目名称修改(XCODE4.6)

    最近为了保存苹果商店已有版本软件,打算重新上传一个程序,与原来的软件仅样式不同.在修改网plist文件中的名称后,archive时报错了,结果发现时工程名称没有修改到.下面就与大家分享下修改已有项目名 ...