C# 连接SQL数据库

2023-05-16

测试代码:控制台应用



using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Reflection;

namespace XF.ADO.DB
{

    public class T2
    {
        public int? fId { get; set; }
        public string fname { get; set; }
        public string fpass { get; set; }
        public DateTime? faddtime { get; set; }
        public string ftimespan { get; set; }
    }

    public class XFDB
    {

        static void Main()
        {
           
            //查询
            string connstr = "Data Source = 127.0.0.1; Initial Catalog = Test; Persist Security Info = True; User ID = sa; Password = xinfu978";
            XFDB db = new XFDB(connstr,false);
            Console.WriteLine(DateTime.Now.ToString());
            try
            {
                T2 d = new T2();
                //d.fId = 1058585;
                d.fname = "kkkkkkkkkk";
                d.faddtime = DateTime.Now;

                for (int i = 0; i < 1000000; i++)
                {
                    db.FnAdd(d);
                }


                //int i = db.FnUpdate(d, "fId", "T2");
                //d.fname = "qqqqqqqqq";
                //i = db.FnUpdate(d, "fId", "T2");
                //db.Commit();
            }
            catch (Exception e)
            {
                db.Rollback();
            }

            Console.WriteLine(DateTime.Now.ToString());
            db.FnDispost();

            Console.ReadKey();
        }


        string connectString = "";
        public XFDB(string connectString,bool isRran = false)
        {
            this.connectString = connectString;
            conn = new SqlConnection(connectString);
            conn.Open();
            if (isRran)
            {
                tran = conn.BeginTransaction();
            }
        }

        public void Commit()
        {
            if (tran != null)
            {
                tran.Commit();
            }
        }

        public void Rollback()
        {
            if (tran != null)
            {
                tran.Rollback();
            }
        }

        public void FnDispost()
        {
            try
            {
                conn.Dispose();
                tran.Dispose();
            }
            catch (Exception)
            {

            }
        }
        SqlConnection conn = null;
        SqlTransaction tran = null;
        
        public DataTable FnSelect(string sqlStr)
        {
                SqlDataAdapter myDataAdapter = new SqlDataAdapter(sqlStr, conn);
                DataSet myDataSet = new DataSet();      // 创建DataSet
                myDataAdapter.Fill(myDataSet);
                return myDataSet.Tables[0];
        }

        public T FnSelect<T>(string sqlStr)
        {
            SqlDataAdapter myDataAdapter = new SqlDataAdapter(sqlStr, conn);
            DataSet myDataSet = new DataSet();      // 创建DataSet
            myDataAdapter.Fill(myDataSet);
            return FnDataTableToList<T>(myDataSet.Tables[0]);

        }

        public int FnExecute(string sqlStr)
        {
            SqlCommand cmd = conn.CreateCommand();
            if (tran != null)
            {
                cmd.Transaction = tran;
            }
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sqlStr;   //sql语句
            return cmd.ExecuteNonQuery();

        }

        public int FnAdd<T>(T obj)
        {
            string classname = typeof(T).ToString();
            classname = classname.Substring(classname.LastIndexOf(".") + 1);
            return FnAdd<T>(obj, classname);
        }

        public int FnAdd<T>(T obj, string mTableName)
        {
            string key = "";
            string val = "";
            Type type = obj.GetType();
            PropertyInfo[] ps = type.GetProperties();
            bool addDo = true;
            foreach (PropertyInfo i in ps)
            {
                Object objq = i.GetValue(obj, null);
                if (objq != null)
                {
                    if (addDo)
                    {
                        key += $"[{i.Name}]";
                        val += $"'{objq}'";
                        addDo = false;
                    }
                    else
                    {
                        key += $",[{i.Name}]";
                        val += $",'{objq}'";
                    }
                }
            }
            return FnExecute($"INSERT INTO [dbo].[{mTableName}] ({key}) VALUES ({val})");
        }

        public int FnUpdate<T>(T obj, string PId, string mTableName)
        {
            string changes = "";
            string where = "";
            Type type = obj.GetType();
            PropertyInfo[] ps = type.GetProperties();
            bool addDo = true;
            foreach (PropertyInfo i in ps)
            {
                Object objq = i.GetValue(obj, null);
                if (i.Name == PId.ToString())
                {
                    if (objq.GetType().ToString().IndexOf("Int") >= 0)
                    {
                        where = $" WHERE [{PId}] = {objq}";
                    }
                    else
                    {
                        where = $" WHERE [{PId}] = '{objq}'";
                    }
                }
                else
                {
                    if (objq != null)
                    {
                        if (addDo)
                        {
                            changes += $"[{i.Name}] = '{objq}'";
                            addDo = false;
                        }
                        else
                        {
                            changes += $",[{i.Name}] = '{objq}'";
                        }
                    }
                }
            }
            return FnExecute($"UPDATE [dbo].[{mTableName}] set {changes} {where}");
        }

        public int FnUpdate<T>(T obj, int PId, string mTableName)
        {
            string changes = "";
            string where = "";
            Type type = obj.GetType();
            PropertyInfo[] ps = type.GetProperties();
            bool addDo = true;
            foreach (PropertyInfo i in ps)
            {
                Object objq = i.GetValue(obj, null);
                if (i.Name == PId + "")
                {
                    where = $" WHERE [{PId}] = {objq}";
                    continue;
                }

                if (objq != null)
                {
                    if (addDo)
                    {
                        changes += $"[{i.Name}] = '{objq}'";
                        addDo = false;
                    }
                    else
                    {
                        changes += $",[{i.Name}] = '{objq}'";
                    }
                }
            }
            return FnExecute($"UPDATE [dbo].[{mTableName}] set {changes} {where}");
        }

        public string FnAdd2<T>(T obj, string mTableName)
        {
            string key = "";
            string val = "";
            Type type = obj.GetType();
            PropertyInfo[] ps = type.GetProperties();
            bool addDo = true;
            foreach (PropertyInfo i in ps)
            {
                Object objq = i.GetValue(obj, null);
                if (objq != null)
                {
                    if (addDo)
                    {
                        key += $"[{i.Name}]";
                        val += $"'{objq}'";
                        addDo = false;
                    }
                    else
                    {
                        key += $",[{i.Name}]";
                        val += $",'{objq}'";
                    }
                }
            }
            return $"INSERT INTO [dbo].[{mTableName}] ({key}) VALUES ({val})";
        }

        public T FnDataTableToList<T>(DataTable dt)
        {
            return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(dt, new DataTableConverter()));
        }

        public static object FnOutObjExitPar(object obj, string mOutPar)
        {
            Type type = obj.GetType();
            PropertyInfo[] ps = type.GetProperties();
            foreach (PropertyInfo i in ps)
            {
                if (mOutPar.IndexOf(i.Name) < 0)
                {
                    i.SetValue(obj, null);
                }
            }
            return obj;
        }

        static JsonSerializerSettings mJsonSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
        public static string ObjectToJson(object obj)
        {
            return JsonConvert.SerializeObject(obj, Formatting.None, mJsonSettings);
        }
        public static T JsonToObject<T>(string json)
        {
            return JsonConvert.DeserializeObject<T>(json);
        }
    }
}



数据库ssms 截图:





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 连接SQL数据库 的相关文章

  • 使用来自另一个的 SELECT 更新表,但字段为 SUM(someField)

    基本上我有这样的事情 UPDATE Table SET Table col1 other table col1 FROM Table INNER JOIN other table ON Table id other table id 问题是
  • 使用 Proc sql 和 Teradata 在 SAS 中编写高效查询

    编辑 这是一组更完整的代码 它准确地显示了下面的答案所发生的情况 libname output data files jeff let DateStart 01Jan2013 d let DateEnd 01Jun2013 d proc s
  • 使用 SQL 完全复制 postgres 表

    免责声明 这个问题和栈溢出问题类似here https stackoverflow com questions 198141 copy a table including indexes in postgres 但这些答案都不适用于我的问题
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 作为 UDF 结果的列上的 Where 子句

    我有一个用户定义的函数 例如myUDF a b 返回一个整数 我试图确保该函数仅被调用一次 并且其结果可以用作WHERE clause SELECT col1 col2 col3 myUDF col1 col2 AS X From myTa
  • 如何授予 SQL Server 代理访问权限以便能够写入/修改系统文件?

    我的工作有一个存储过程 运行 BCP 来查询一些数据 如果我单独运行 QUERYOUT 命令 它就会起作用 但是 如果我尝试在作业中运行它 它会创建文件但 挂起 并且数据永远不会放入文件中 这会永远挂起 所以我通常终止 BCP exe 我的
  • 从java运行sqlplus脚本的简单方法

    我有包含 sqlplus 特定脚本的 sql 文件 它包括 或 作为语句终止符 执行存储过程的 EXEC 等 我需要从 java jdbc 执行此脚本 而不需要 sqlplus sql ant任务 maven sql插件无法处理不同的终止符
  • 查询获取每条记录的最小日期[重复]

    这个问题在这里已经有答案了 我想获取表中每条记录的最小日期 该表具有多个带有一个主键的日期条目 看看我的桌子 CaseNo Entry date ABC 001 2 12 13 ABC 002 2 09 13 ABC 001 1 01 13
  • 什么是动态 SQL 查询?何时需要使用动态 SQL 查询?

    什么是动态 SQL 查询 何时需要使用动态 SQL 查询 我正在使用 SQL Server 2005 这里有几篇文章 动态SQL简介 http www sqlteam com article introduction to dynamic
  • 单个查询删除并显示重复记录

    采访中提出的问题之一是 一张表有100条记录 其中 50 个 是重复的 是否可以用单个 查询删除重复记录 从表中以及选择和 显示剩余 50 条记录 这可以在单个 SQL 查询中实现吗 Thanks SNA 对于 SQL Server 你会使
  • SQL Server 2008 中的全文搜索一步一步

    如何开始使用SQL Server 2008 中的全文搜索 阅读这些链接 SQL SERVER 2008 创建全文目录和全文搜索 http blog sqlauthority com 2008 09 05 sql server creatin
  • SQL Server 2008 GUID 列全为 0

    我希望这是我做的一个简单的傻事 我的数据库中有一个表 设置如下 column name widget guid data type uniqueidentifier allow nulls false default value newid
  • 如何获得组中“中间”值的平均值?

    我有一个包含值和组 ID 的表 简化示例 我需要获取中间 3 个值的每组的平均值 因此 如果有 1 2 或 3 个值 则它只是平均值 但如果有 4 个值 它将排除最高值 5 个值将排除最高值和最低值 等等 我正在考虑某种窗口函数 但我不确定
  • 如何获取Postgres当前的可用磁盘空间?

    在开始在数据库中进行某些工作之前 我需要确保至少有 1Gb 的可用磁盘空间 我正在寻找这样的东西 select pg get free disk space 是否可以 我在文档中没有找到任何相关内容 PG 9 3 操作系统 Linux Wi
  • 迁移问题:MS SQL > MySQL:插入缓冲区内存

    我在使用 MySQL Workbench 上的内置迁移工具时遇到问题 我正在将一个非常大的数据库从 MS SQL 2014 迁移到 MySQL MS SQL 服务器本地部署在我的 Windows 8 1 桌面上 MySQL 服务器在我的网络
  • 更高效的 LINQ 查询

    有人可以帮我将此查询循环变成高效的 Linq 查询吗 我将其加载到 TreeView 中 因此必须附加每个项目 包含也非常低效 延迟加载项目也不起作用 事实上 这个查询访问数据库的次数比应有的要多 public IQueryable
  • 从一张表更新并插入另一张表

    我有两张桌子 table1 ID 代码 姓名 table2 ID 代码 姓名 具有相同的列 我想将数据从 table1 插入到 table2 或更新列 如果 table2 中存在 table1 ID table2 ID 执行此操作的简单方法
  • LEFT JOIN 比 INNER JOIN 快得多

    我有一张桌子 MainTable 有超过 600 000 条记录 它通过第二个表连接到自身 JoinTable 在父 子类型关系中 SELECT Child ID Parent ID FROM MainTable AS Child JOIN
  • 如何重置 SQL Server 中表的 IDENTITY 列? [复制]

    这个问题在这里已经有答案了 我怎样才能重置我的IDENTITY我已经填充的表中的列 我尝试过类似的方法 但它不起作用 WITH TBL AS SELECT ROW NUMBER OVER ORDER BY profile id AS RN
  • 总结同一个 SQL 表上的两个条件

    给定一个 SQL 表 Transactions ID INT COMPANY ID INT STATUS INT where STATUS IN 0 1 表示免费交易并且STATUS IN 2 3 表示可计费交易 简单的 我希望 ANSI

随机推荐