1.首先在App.config配置文件中配置数据库连接字符串:

<appSettings>
<add key="connectionstring" value="server=XXX.XX.X.XX;uid=sa;pwd=******;database=XXXX"/>
<!--<add key="datahost" value="XXX.XX.X.XX" />
<add key="database" value="XXXX" />
<add key="uid" value="sa" />
<add key="pwd" value="******" />-->
</appSettings>

2.代码获取配置文件中设置的数据库连接字符串

        private static string connectionString = ConfigurationManager.AppSettings["connectionstring"];

3.创建数据库连接方法:

 public static SqlConnection CreateSqlConn() {
SqlConnection conn = new SqlConnection(connectionString);
return conn;
}

4.通过创建数据库操作类(SqlCommand),实现对数据库的增删改查操作:

增:

 public static int SaveWorkInfo(SqlConnection conn,string workName,string dealPeriod,string syncType) {
if(conn.State == ConnectionState.Closed){
conn.Open();
}
IDbTransaction tran = conn.BeginTransaction();
int id = 0;
try {
string tableName = "HH_SyncWorkInfo";
string column = "WorkName,DealPeriod,SyncType,CreatedTime";
string value = "'" + workName + "','" + dealPeriod + "','" + syncType + "',getDate()";
id = createPkReturnId(tableName,column,value,conn,tran);
if(id > 0){
tran.Commit();
conn.Close();
}
}catch(Exception ex){
tran.Rollback();
conn.Close();
throw new Exception("保存数据失败!具体详情:" + ex.Message.ToString());
}
return id;
} private static int createPkReturnId(string tableName, string column, string value, SqlConnection conn, IDbTransaction tran)
{
try
{
String strSQL = "INSERT INTO " + tableName + " (" + column + ") VALUES (" + value + ");SELECT @@Identity";
SqlCommand cmd = (SqlCommand)conn.CreateCommand();
cmd.CommandText = strSQL;
cmd.Transaction = (SqlTransaction)tran;
int id = Int32.Parse(cmd.ExecuteScalar().ToString());
return id;
}
catch (Exception ex)
{
conn.Close();
throw new Exception("主表数据保存失败!具体详情:" + ex.Message.ToString());
}
}

删:

public static bool DeleteWorkItem(string ID)
{
SqlConnection conn = CreateSqlConn();
conn.Open();
IDbTransaction tran = conn.BeginTransaction();
try
{
string strSQL = "delete HH_SyncWorkInfo where ID='" + ID + "'";
int result = conn.Execute(strSQL, null, tran);
if (result > 0)
{
tran.Commit();
conn.Close();
return true;
}
else {
tran.Rollback();
conn.Close();
return false;
}
}
catch (Exception ex)
{
tran.Rollback();
conn.Close();
throw new Exception("删除失败!具体详情:" + ex.Message.ToString());
}
}

改:

public static bool UpdateWorkInfo(string id, string workName, string dealPeriod, string syncType)
{
using (var conn = CreateSqlConn())
{
string sql_update = "update HH_SyncWorkInfo SET WorkName = '" + workName + "',dealPeriod = '"+ dealPeriod + "',syncType= '"+ syncType +"' where ID = " + id;
int result = conn.Execute(sql_update); if (result > 0)
return true;
else
return false;
}
}

查:

 public static List<WorkInfo> GetWorksInfo()
{
using (var conn = CreateSqlConn())
{
string sql = "select * from HH_SyncWorkInfo";
List<WorkInfo> list = conn.Query<WorkInfo>(sql).AsList();
if (list.Count > 0)
{
return list;
}
else
{
return null;
}
}
}

5.调用存储过程

/// <summary>
///
/// </summary>
/// <param name="sql">存储过程名称</param>
/// <param name="parameters">参数数组</param>
/// <returns></returns>
public static string exectueProcude(string sql, params SqlParameter[] parameters) {
using (SqlConnection conn = SqlHelperDB.CreateSqlConn())
{
conn.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(parameters);
string result = cmd.ExecuteScalar().ToString();
cmd.Parameters.Clear();
conn.Close();
return result;
}
}
}

通过ExecuteScalar()返回执行结果第一行第一列的值。

在程序中调用执行存储过程方法:

SqlParameter[] para = new SqlParameter[1];
para[0] = new SqlParameter("@OrgID", org_list[nRow].FID);
string Max_CreateTime = ProviderDB.executeProcude("HH_P_GET_GetMax_CreateTime", para);

C# WinForm 数据库连接及对数据库的相关操作的更多相关文章

  1. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  2. PHP对MySQL数据库的相关操作

    一.Apache服务器的安装 <1>安装版(计算机相关专业所用软件---百度云链接下载)-直接install<2>非安装版(https://www.apachehaus.com ...

  3. Android下的SQLite数据库的相关操作及AndroidTestCase测试

    一:创建数据库 package com.itcode.mysqlite; import android.content.Context; import android.database.sqlite. ...

  4. mysql数据库和mongodb数据库的相关操作以及两个数据库的区别

    在docs命令中执行数据操作 MySQL数据库 先启动MySQL服务器  net start mysql 进入MySQL服务器MySQL -uroot -p(这里写你的数据库密码) (-P是从哪个端口 ...

  5. MySQL数据库---记录相关操作

    序 表中记录的相关操作一共四种:插入,更新,删除.查询.其中使用最多,也是最难的就是查询. 记录的插入 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3… ...

  6. 用C#进行WinForm开发对数据库的相关操作

    class SQLHelper { public SqlConnection conn; //<summary> //链接.打开数据库 //</summary> public ...

  7. mysql数据库字符集相关操作(修改表字段编码,使其支持emoji表情)

    普通的UTF8编码是不支持emoji表情插入的,会报异常: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x9 ...

  8. Linux小知识(1): bash中执行数据库的相关操作

    工作中经常会遇到命令行操作数据库或登陆至其他服务器等情况,往往需要通过命令行进入相关的数据库或登陆至相关的服务器,再执行指令操作,因此有没有方法,在命令行或bash脚本中模拟进入数据库或登陆服务器操作 ...

  9. SQLServer 维护脚本分享(04)服务器角色和数据库角色相关操作

    /*------------------------------------------------------------------------------------ [服务器级别-服务器角色] ...

随机推荐

  1. python之字典(dict)基础篇

    字典:dict 特点: 1>,可变容器模型,且可存储任意类型对象,字符串,列表,元组,集合均可: 2>,以key-value形式存在,每个键值 用冒号 : 分割,每个键值对之间用逗号 , ...

  2. POJ 2299 Ultra-QuickSort 求逆序数 线段树或树状数组 离散化

    我用的线段树写的. num数组表示已插入的数值的个数. 由于a[i]数值很大,但是n不是很大,所以要离散化处理 9 1 0 5 4 离散化后 4 1 0 3 2 这样保证最大值不会超过n #inclu ...

  3. 【spring源码系列】之【Bean的属性赋值】

    每次进入源码的世界,就像完成一场奇妙的旅行! 1. 属性赋值概述 上一篇讲述了bean实例化中的创建实例过程,实例化后就需要对类中的属性进行依赖注入操作,本篇将重点分析属性赋值相关流程.其中属性赋值, ...

  4. linux学习之路第七天(时间日期类指令详解)

    时间日期类 1.date指令 date指令 - 显示当前日期 基本语法 1)date (功能描述:显示当前时间): 2) date + %Y (功能描述:显示当前年份) 3)date+%m( 功能描述 ...

  5. Java8 Map中新增的方法使用总结

    前言 得益于 Java 8 的 default 方法特性,Java 8 对 Map 增加了不少实用的默认方法,像 getOrDefault, forEach, replace, replaceAll, ...

  6. LVM磁盘管理实战案例

    前言:这是关于centos/linux上的LVM磁盘上的扩容,缩减,磁盘类型等收集做的案例 至于ubuntu系统的磁盘扩容参考:https://www.jianshu.com/p/5dcfcec687 ...

  7. 测试管理工具 - Tuleap部署和安装使用教程

    安装 通过CentOS的安装,非常简单,命令直接为pip install tuleap 部署 登录管理员权限 登录名为中文名拼音,如wuweiping. 设置的默认密码为12345678,也可以进入配 ...

  8. C语言:源代码兼容WINDOWS LINUX

    使用库函数之前,应该用#include引入对应的头文件.这种以#号开头的命令称为预处理命令.C语言源文件要经过编译.链接才能生成可执行程序:1) 编译(Compile)会将源文件(.c文件)转换为目标 ...

  9. HTML元素属性及意义

    HTML属性可以给元素添加附加信息,设置的时候以 (属性名="属性值")成对出现. 属性值应该始终包括在引号内(单引号或双引号),html对大小写不敏感,所以属性和属性值也不区分大 ...

  10. Python之一行代码将网址URL转换成动态彩色二维码

    先在 pycharm 安装 myqr.或者,Python3 必装,然后命令行 pip install myqr  也可. 将我的微信公众号网址:http://weixin.qq.com/r/hRMQC ...