思路:

  1、想想插入语句,大概是这样的一个框架:INSERT INTO 表名 (数据库列名) values (值)

  2、这里要3个变量是不固定的,分别是:表名、数据库列名、值;

    a.表名我们这里很容易可以获取到

    b.数据库列名,我们可以遍历容器获取控件的Name属性

    c.值,我们可以遍历容器获取控件的Text属性

 private static Dictionary<string, string> GetDicKeyValue(Control controlBox)
{
//遍历容器获取控件的Name属性和Text属性,存放到键值中,用于以下的拼接sql
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (Control item in controlBox.Controls)
{
if (item is Label || item is PictureBox)
{
continue;
}
if (item is TextBox)
{
dic.Add(item.Name.Substring(, item.Name.Length - ), item.Text.Trim());
continue;
}
if (item is ComboBox)
{
dic.Add(item.Name.Substring(, item.Name.Length - ), item.Text);
continue;
}
if (item is DateTimePicker)
{
dic.Add(item.Name.Substring(, item.Name.Length - ), item.Text);
continue;
}
if (item is CheckBox)
{
string result = ((CheckBox)item).Checked ? "" : "";
dic.Add(item.Name.Substring(, item.Name.Length - ), result);
continue;
}
}
return dic;
}

好了,我们通过上面一个函数已经获取到控件的Name属性(即数据库列名)和Text属性(即值),下面开始组装Sql语句

 private void button1_Click(object sender, EventArgs e)
{
Dictionary<string, string> dic = GetDicKeyValue(panel1);
string autoMatchSql = string.Empty;
StringBuilder Sb1 = new StringBuilder();
StringBuilder Sb2 = new StringBuilder();
foreach (KeyValuePair<string, string> item in dic)
{
Sb1.Append(item.Key.Trim()).Append(",");
Sb2.Append("'").Append(item.Value.Trim()).Append("'").Append(",");
}
autoMatchSql += "INSERT INTO 表名 ";
autoMatchSql += " (" + Sb1.ToString().Substring(, Sb1.Length - ) + ") VALUES ";
autoMatchSql += " (" + Sb2.ToString().Substring(, Sb2.Length - ) + ")";
}

C#的自动拼接Sql语句Insert方法及思路的更多相关文章

  1. StringBuilder 拼接sql语句比较快

    StringBuilder 拼接sql语句比较快StringBuilder strBuilder = new StringBuilder();strSql += "insert into t ...

  2. sql语句判断方法之一

    sql语句判断方法之一CASE语句用法总结 背景: Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN ' ...

  3. ASP.NET实现列表页连接查询 拼接sql语句 绑定grivdView

    ASP.NET实现列表页连接查询 拼接sql语句 如图效果: 基本需求:1.当页面第一次加载的时候默认查询一个月时间(或者说是登陆者所属权限的所有数据)的数据绑定到gridView 2.添加查询条件时 ...

  4. thinkPHP框架中执行原生SQL语句的方法

    这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友 ...

  5. java动态拼接sql语句并且执行时给sql语句的参数赋值

    问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 ...

  6. EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand

    前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery ...

  7. 如何自动拼接 Update语句,仅Update已修改的字段

    我们通常使用update语句更新数据库记录,例如使用update user set username='001', nickname='Tom', age=18 where id = 1语句更新use ...

  8. 查询拼接SQL语句,多条件模糊查询

    多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e ...

  9. 查看 Laravel 的 SQL 语句的方法

    在使用 Laravel 的 Eloquent 进行数据查询的时候,很多小伙伴都想看到背后执行的 SQL 语句到底是什么样的,这小笔录就是解决这个小问题的: 在 Providers/AppService ...

随机推荐

  1. Java IO 导入导出TXT文件

    字节流和字符流 区别: 读写单位:顾名思义,字节流以字节(byte)为读写单位,而字符流以字符为读写单位,根据码表映射字符,一次可能读入多个字符. 处理对象:字节流可以处理所有类型的数据(包括图片等) ...

  2. 【JMeter】(3)---MySQL压测

    JMeter---MySQL压测 一.添加MySQL驱动jar包 在测试计划(Test Plan)页面添加jar包 二.添加MySQL连接配置 添加线程组右击-->添加(add)-->配置 ...

  3. System.Data.Entity.Infrastructure.DbUpdateException

    异常描述:   捕捉到 System.Data.Entity.Infrastructure.DbUpdateException  HResult=-2146233087  Message=无法更新 E ...

  4. solr索引报错(java.lang.OutOfMemoryError:GC overhead limit exceeded)

    配置文件修改如下: <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3 ...

  5. redis 系列20 服务器下

    二. serverCron函数 2.3 更新服务器每秒执行命令次数 serverCron函数中的trackOperationsPerSecond函数会以每100毫秒一次的频率执行,这个函数以抽样计算的 ...

  6. MySQL8.0.12 安装及配置、读写分离,主从复制

    一.安装 1.从网上下载MySQL8.0.12版本,下载地址:https://dev.mysql.com/downloads/mysql/ 2. 下载完成后解压 我解压的路径是:D:\Java\mys ...

  7. 【Java基础】【19异常&IO(File类)】

    19.01_异常(异常的概述和分类) A:异常的概述 异常就是Java程序在运行过程中出现的错误. B:异常的分类 通过API查看Throwable Error 服务器宕机,数据库崩溃等 Except ...

  8. PE知识复习之PE合并节

    PE知识复习之PE合并节 一丶简介 根据上一讲.我们为PE新增了一个节. 并且属性了各个成员中的相互配合. 例如文件头记录节个数.我们新增节就要修改这个个数. 那么现在我们要合并一个节.以上一讲我们例 ...

  9. 开源 serverless 产品原理剖析 - Kubeless

    背景 Serverless 架构的出现让开发者不用过多地考虑传统的服务器采购.硬件运维.网络拓扑.资源扩容等问题,可以将更多的精力放在业务的拓展和创新上. 随着 serverless 概念的深入人心, ...

  10. Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)

    一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...