C# winform 增查改删数据库内容 每次进行一个操作都要复制以下代码

cn.Open();
SqlCommand sql = new SqlCommand("select *from rkb where 编码='" + textBox2.Text + "'");
SqlDataAdapter da = new SqlDataAdapter();
DataTable ds = new DataTable();
da.SelectCommand = sql;
da.SelectCommand.Connection = cn;
da.Fill(ds);
this.dataGridView1.DataSource = ds;
sql.ExecuteNonQuery();
cn.Close();

cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection =cn;
cmd.CommandText = "insert into kcbvalues('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')";
MessageBox.Show("入库成功");
cmd.ExecuteNonQuery();
cn.Close();

大佬们都怎么优化的  比如建一个类 或者其他办法都可以  能给一小段代码参考下吗      有看到网上的实例发个链接也可以               

6个回答

封装成一个工具类,根据你的需求需要两个接口就可以了,一个是查询操作返回DataTable,另一个是非查询操作返回整型就可以了,然后传入sql就可以了,现成的数据库连接工具类网上一大堆,例如:https://www.cnblogs.com/AMortal/p/7538443.html

hxycsdn9159
hxycsdn9159 这个地址里面的第2个:ExecuteNonQuery()方法和第4个:ExecuteDataTable()就可以满足你的要求
大约一年之前 回复

感觉我这么搞小程序看不出来 要是数据量大点估计会很慢吧 程序里写满了以上这种代码 感觉很蠢 又不知道怎么弄。。。

 class DbUtils{
    public boolean exec(sql){
        boolean result = false;
        try{
            cn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection =cn; 
            cmd.CommandText = "insert into kcbvalues('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')";
            result = cmd.ExecuteNonQuery()==1;
            cn.Close();
        }catch(Exception e){

        }       
        return result;
    }

    public SqlDataAdapter query(string sqlStr){
        cn.Open();
        SqlCommand sql = new SqlCommand(sqlStr);
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable ds = new DataTable();
        da.SelectCommand = sql;
        da.SelectCommand.Connection = cn;
        da.Fill(ds);
        cn.Close();
        return da;
    }

}

最简单的是写一个这样的工具类,把平时用到的增删改查抽象出来,然后sql语句单独传进来执行就行了;
复杂点的是,找一些现成的持久层框架,这样就不用你自己写创建数据库连接,关闭数据库连接等与业务没关联而又繁琐的事情;
因为我是java,给你的一个代码里,很有可能会有报错,自己理解意思就行。

Csharpsss
Csharpsss 谢谢
大约一年之前 回复

增/删/改 一个方法, 查询一个方法
public class databasemanager
{
public DataTable query(vSql)
{
cn.Open();
SqlCommand sql = new SqlCommand(vSql);
SqlDataAdapter da = new SqlDataAdapter();
DataTable ds = new DataTable();
da.SelectCommand = sql;
da.SelectCommand.Connection = cn;

sql.ExecuteNonQuery();
da.Fill(ds);
cn.Close();
}

public DataTable save(vSql)
{
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection =cn;
cmd.CommandText = vSql;
cmd.ExecuteNonQuery();
cn.Close();
}
}
外部调用的时候,如下:
string vSql = "select * from rkb where 编码='" + textBox2.Text + "'";
databasemanager newManage = new databasemanager()
DataTable dtSourct = newManager.query(vSql)
this.dataGridView1.DataSource = dtSourct;

微软官方SqlHelper工具类,你可以参考下
下面是我自己以前小项目自用的

 public   class SQLHelper
    {
 private SqlConnection conn = null;
            private SqlCommand cmd = null;
            private SqlDataReader sdr = null;

            public SQLHelper()
            {
                string connStr = ConfigurationManager.AppSettings["connStr"];
                conn = new SqlConnection(connStr);
            }

            private SqlConnection GetConn()
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                return conn;
            }


            /// <summary>
            /// 执行不带参数的的增删改SQL语句或者存储过程
            /// </summary>
            /// <param name="cmdText">增删改查SQL</param>
            /// <param name="ct">命令类型</param>
            /// <returns>返回受影响的行数</returns>
            public int ExecuteNonQuery(string cmdText, CommandType ct)
            {
                int res;
                try
                {
                    cmd = new SqlCommand(cmdText, GetConn());
                    cmd.CommandType = ct;
                    res = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {

                    throw ex;
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }

                }
                return res;
            }

            /// <summary>
            /// 执行带参数的的增删改SQL语句或者存储过
            /// </summary>
            /// <param name="cmdText">增删改查SQL</param>
            /// <param name="paras">要查询的参数</param>
            /// <param name="ct">命令类型</param>
            /// <returns>返回受影响的行数</returns>
            public int ExecutenQuery(string cmdText, SqlParameter[] paras, CommandType ct)
            {
                int res;
                using (cmd = new SqlCommand(cmdText, GetConn()))
                {
                    cmd.CommandType = ct;
                    cmd.Parameters.AddRange(paras);
                    res = cmd.ExecuteNonQuery();
                }
                return res;
            }


            /// <summary>
            ///  执行不带参数的查询SQL语句或存储过程
            /// </summary>
            /// <param name="cmdText">查询SQL语句或存储过程</param>
            /// <param name="ct">命令类型</param>
            /// <returns></returns>
            public DataTable ExecuteQuery(string cmdText, CommandType ct)
            {
                DataTable dt = new DataTable();
                cmd = new SqlCommand(cmdText, GetConn());
                cmd.CommandType = ct;
                using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    dt.Load(sdr);
                }
                return dt;
            }


            /// <summary>
            /// 执行带参数的查询SQL语句或存储过程
            /// </summary>
            /// <param name="cmdText">查询SQL语句或存储过程</param>
            /// <param name="paras">参数集合</param>
            /// <param name="ct">命令类型</param>
            /// <returns></returns>
            public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
            {
                DataTable dt = new DataTable();
                cmd = new SqlCommand(cmdText, GetConn());

                cmd.CommandType = ct;
                cmd.Parameters.AddRange(paras);
                using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    dt.Load(sdr);
                }
                return dt;
            }
        }
    }

老兄虽然我是做c++的,但是你这个cn是数据库的一个对象吧,有必要这么频繁的开关吗,这种开关是不是放在程序的入口和出口就可以了?
至于封装,你可以把这数据库操作功能直接封装成一个类,增删查改做成类的接口,使用功能时候只要调用接口就可以了,这样不就可以避免大量重复的代码了?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# winform 增查改删数据库内容 每次进行一个操作都要复制以下代码
cn.Open();n SqlCommand sql = new SqlCommand("select *from rkb where 编码='" + textBox2.Text + "'");n SqlDataAdapter da = new SqlDataAdapter();n DataTable ds = new DataTable();n da.SelectCommand = sql;n da.SelectCommand.Connection = cn;n da.Fill(ds);n this.dataGridView1.DataSource = ds;n sql.ExecuteNonQuery();n cn.Close();n n n n cn.Open();n SqlCommand cmd = new SqlCommand();n cmd.Connection =cn; n cmd.CommandText = "insert into [kcb]([品名],[编码],[库存],[备注])values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')";n MessageBox.Show("入库成功");n cmd.ExecuteNonQuery();n cn.Close(); n n n 大佬们都怎么优化的 比如建一个类 或者其他办法都可以 能给一小段代码参考下吗 有看到网上的实例发个链接也可以 nn
C#数据库 的增查改删的操作
各位高手,我是刚学C# 谁能为我提供一个C#数据库 的增查改删的操作 谢谢!
EXTJS的增改删查
里面涉及到多种布局,有你想要的技术,快行动吧!
数据的增查改删
表中数据的操作 1、插 插入数据--insert into student values(1, 'TOM', '男'); 全列插入 --insert into student values(2, 'JACK', '男'), (3, 'ALICE', '女'); 批量插入 --insert ...
springmvc整合mongodb 增查改删操作
1. 新建dynamic web project,项目结构如下: 编辑web.xml xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xs
用struts2+dpring做的增改删查操作
用struts2+dpring做的增改删查操作
EasyUI增查改删操作示例
详尽的easyui操作示例,便于新手测试学习应用,代码示例使用C#编写,可以方便的编译调测!
Mongoose增查改删学习笔记
初学Node.js接触到MongoDB数据库,阅读资料中推荐的都是Mongoose模块,可以更加方便的对数据库进行操作,便开始接触Mongoose。在学习时碰到许多基础问题,查阅了许多资料理来理解,此篇文章就是以自己的理解,记录下入门的基础知识,以及归纳下常用的函数以及格式,方便今后查阅。初学笔记难免有许多不足与错误欢迎指出。 环境搭建 ...
SSI简单的增改删查
简单的SSI的CRUD,学习用。SSI+MYSQL实例。
List的初始化,及增改删查
List的初始化,及增改删查 1. list的初始化(采用无参的构造方法来实现初始化,也可直接初始化)   2. 增(往list中存放对象) 先实例化一个对象,之后调用add()方法, 将对象取出用get()方法,但对象存入集合都会变成object类型,取出时要进行类型转换。 方法2中调用了不同的add()方法,传入的是位置的参数(从0开始),不得超过集合长度否则会报错。   ...
最全的Mysql 数据库的增改删查
数据修改; alter table student renname student; 修改 制表 alter table students drop column phone; alter table students change column naem name char(22); 将错误的naem 更换 name update person set name=“小谁谁” where i...
数据库_MySQL: mysql数据的增查改删
一、运算符 1、算术运算符(+、-、*、/、%) 2、关系运算符(&amp;amp;amp;amp;gt;、&amp;amp;amp;amp;gt;=、&amp;amp;amp;amp;lt;、&amp;amp;amp;amp;lt;=、=、!=) 注意: &amp;amp;amp;quot;=&amp;amp;amp;quot;在where条件判断是否相等 在全局变量中是赋值 3、逻辑运算符(and、or、not) 二、高级增(Create) 语法:insert into 表名 (字段1,...,字段
hibernate 3.3 实现增改删查
hibernate 3.3 实现增改删查 适合初学者
DBA-1-3【管理表记录(增查改删)】
++++++++++++++++++【管理表记录(增查改删)】++++++++++++++++++ 【【增加表记录】】 insert into 库.表(字段名列表) values (字段值列表); insert into db1.user values(43,&quot;bob&quot;,&quot;x&quot;,2000,2000,“student user&quot;,&quot;/home/bob&quot;,&quot;/bin/bash&quot;);    //给所...
ios-Core Data增查改删.zip
core data基本的增,查,改,删
java中使用mongodb增查改删
新建java project,使用jar包(mongo-java-driver-3.3.0.jar) package com.yf.mongodb; import org.junit.Test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import
MagicalRecord 增查改删 基本用法
#pragma mark 删除数据 - (void)deleteData { // delete数据库中所有人 [Person MR_truncateAll]; [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait]; // 根据条件delete
DOM树的增查改删总结
对HTML DOM的操作是前端JavaScript编程时必备的技能,本文是我自己对DOM树操作的总结,主要是方法的罗列,原理性的讲述较少,适合大家用于理清思路或是温习
flask + MongoDB 学习笔记(2):增改删查数据库
增加数据 @app.route('/add') def add(): user = mongo.db.users user.insert({'username':'Bill' , 'password':'1111'}) return 'Added User!' 查找数据 @app.route('/find') def find(): user = mongo.db.use
查询与增改删功能
查询与增改删功能
Mysql的增改删
MySQL的增改删 delete删除和truncate删除的区别 DELETE语句是DML语句,TRUNCATE语句通常被认为是DDL语句。 DELETE语句后面可以跟WHERE子句,通过指定WHERE子句中的条件表达式只删除满足条件的部分记录,而TRUNCATE语句只能用于清空表中的所有记录。 使用TRUNCATE语句删除表中的数据后,再次向表中添加记录时,自动增加字段的默认初始值重新由1开始...
MySQL——数据的增改删
1.插入数据 insert   插入完整的行     insert into 表名 (列名) valules (列的各个值);(这种写法以后即使改变表结构也不会影响)   简化:insert into 表名 valules (各个列的值);这种写法列的值必须和表的列的顺序一一对应,就算列的值允许为空,也要填null    插入行的一部分   insert into 表名(部分列名) va
xml节点的增改删
增加、更改、删除xml的指定节点,并在操作前遍历xml文件,判断节点是否存在。注意是指定的节点和子节点!!!
Hibernate批量增改删
Hibernate是一个轻量级的JDBC封装,也就是说,我们可以使用Hibernate来完成原来我们使用JDBC完成的操作,Hibernate是企业级开发中的主流框架,映射的灵活性很出色,支持很多关系型数据库。这套课程将Hibernate5里的核心技术尽可能清楚易懂的方式展示在大家的面前!
增改删(python 版)
增加 创建testInsert.py文件,向学生表中插入一条数据#encoding=utf-8 import MySQLdb try: conn=MySQLdb.connect(host='localhost',port=3306,db='test1',user='root',passwd='mysql',charset='utf8') cs1=conn.cursor()
HBaseShell操作之增&查
<p>rn <br />rn</p>rn<p>rn <p>rn 20周年限定一卡通!<span style="color:#337FE5;">可学Java全部课程</span>,仅售799元(原价7016元),<span style="color:#E53333;">还送漫威正版授权机械键盘+CSDN 20周年限量版T恤+智能编程助手!</span>rn </p>rn <p>rn 点此链接购买:rn </p>rn <table>rn <tbody>rn <tr>rn <td>rn <span style="color:#337FE5;"><a href="https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy" target="_blank">https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy</a><br />rn</span>rn </td>rn </tr>rn </tbody>rn </table>rn</p>rn<span>&nbsp;</span> rn<p>rn <br />rn</p>rn<p>rn 本阶段详细介绍了大数据所涉及到的Linux、shell、Hadoop、zookeeper、HadoopHA、Hive、Flume、Kafka、Hbase、Sqoop、Oozie等技术的概念、安装配置、架构原理、数据类型定义、数据操作、存储集群等重点知识点。rn</p>
Shell操作之增&查
<p>rn <br />rn</p>rn<p>rn <p>rn 20周年限定一卡通!<span style="color:#337FE5;">可学Java全部课程</span>,仅售799元(原价7016元),<span style="color:#E53333;">还送漫威正版授权机械键盘+CSDN 20周年限量版T恤+智能编程助手!</span>rn </p>rn <p>rn 点此链接购买:rn </p>rn <table>rn <tbody>rn <tr>rn <td>rn <span style="color:#337FE5;"><a href="https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy" target="_blank">https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy</a><br />rn</span>rn </td>rn </tr>rn </tbody>rn </table>rn</p>rn<span>&nbsp;</span> rn<p>rn <br />rn</p>rn<p>rn 本阶段详细介绍了大数据所涉及到的Linux、shell、Hadoop、zookeeper、HadoopHA、Hive、Flume、Kafka、Hbase、Sqoop、Oozie等技术的概念、安装配置、架构原理、数据类型定义、数据操作、存储集群等重点知识点。rn</p>
HBase_Shell操作之增&查
<p>rn <span style="color:#3D3D3D;">本教程为授权出品作品</span> rn</p>rn<p>rn <span style="color:#404040;">HBase是一个基于HDFS的分布式、面向列的开源数据库,是一个结构化数据的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。是每一个大数据都应该掌握的基本框架。在本课程中,主要讲述了HBase详细的架构原理及特点、HBase内部各个角色的详细介绍、安装配置、HBase的Shell操作、新旧版本的读写数据详细流程、HBase的API操作、使用MapReduce以及Hive对HBase数据分析、Rowkey设计、预分区设计、调优策略以及结合谷粒微博项目将核心知识点再次梳理,更熟练的运用HBase。</span> rn</p>rn<p>rn <br />rn</p>
Mvc+Linq_数据字典的增改删
Mvc+Linq_数据字典的增改删 Mvc+Linq_数据字典的增改删 Mvc+Linq_数据字典的增改删 Mvc+Linq_数据字典的增改删
Datagird增改删例子
C#中 datagird增改删的小例子 .NET 是编辑成功的源码
MySQL——增改删
MySQL——增 可以省略表定义中允许NULL值(无值或空值)或给出默认值的列,其他列不能省略,否则插入将失败并报错。 INSERT [LOW_PRIORITY] INTO table_name(c1, c2, c3, c4, c5) VALUES('a', 'b', 'c', 'd', 'e'),('1', '2', '3', '4', '5'); LOW_PRIORITY 表示降...
SQL学习-表操作(行增改删)
文章目录一、增加——insert into6.1.1 单个——来源于新创建6.1.2 多个——来源于新创建6.1.3 多个——来源于已知表二、修改 ——update三、删除——delete from四、查询——select4.1 简单查询4.1.1 表中全部信息——全部4.1.2 表中全部信息——去重后4.1.3 表中全部信息——表达式操作后4.1.3 运算符处理后:+ - * / %6.4.1...
数据库的增,删,改,查操作
该程序主要是:通讯录管理。其中主要包含的知识有数据库的增,删,改,查操作
数据库的增、删、改、查操作-----(一)
数据库的增、删、改、查操作
C#注册表操作(增/删/改/查)
C#实现对系统注册表的增删改查,循环遍历注册表
C#操作Xml文件:增,删,改,查
新建xml文件–AccountDB.xml 使用xml文件存储页面数据,用与用户登录和用户账号列表的展示 Root> LoginAccount> Column Name="test"> UserGuid>db7e1daa02d17325UserGuid> UserName>testUserName> NickName>张三NickName>
C#操作配置文件(增、删、改、查)
注意:操作App.config配置文件需要添加引用System.Configuration,并且在程序中using System.Configuration1.判断键为create_man的项是否存在配置文件中 //判断配置文件中是否存在键为create_man的项 foreach (string key in ConfigurationManag...
添改删查1
手把手带你阅读的ORM框架EntityFramework源码,教你掌握阅读开源代码的有效方法,在更加深入的了解EF的使用方法及其原理的基础上,你可以获得好的思想,激发编程灵感;学习常用的架构与模式;对于与自己工作领域相关的开源项目,阅读开源项目有助于发现解决问题的新思路;吸收别人的设计思想;学习他人的写法,提高自己的代码质量;学习项目的组织和设计,提高自己的组织代码的能力。
添改删查2
手把手带你阅读的ORM框架EntityFramework源码,教你掌握阅读开源代码的有效方法,在更加深入的了解EF的使用方法及其原理的基础上,你可以获得好的思想,激发编程灵感;学习常用的架构与模式;对于与自己工作领域相关的开源项目,阅读开源项目有助于发现解决问题的新思路;吸收别人的设计思想;学习他人的写法,提高自己的代码质量;学习项目的组织和设计,提高自己的组织代码的能力。
添改删查4
手把手带你阅读的ORM框架EntityFramework源码,教你掌握阅读开源代码的有效方法,在更加深入的了解EF的使用方法及其原理的基础上,你可以获得好的思想,激发编程灵感;学习常用的架构与模式;对于与自己工作领域相关的开源项目,阅读开源项目有助于发现解决问题的新思路;吸收别人的设计思想;学习他人的写法,提高自己的代码质量;学习项目的组织和设计,提高自己的组织代码的能力。
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件