• NetCore 下使用 DataTable 以及可视化工具


    DtatTable 在命名空间System.Data下,NetCore2.0及以上支持。但是2017DataTable没有可视化工具,我也没有深研究直接下载的VS2019。然后在网上早了个SQLHelper直接用上了。

    示例代码:https://github.com/TengshengHou/NetCoreSample/tree/master/SQLHelperDemo

    SQLHelper

    public class SQLHelper
        {
            IConfiguration _configuration;
            private string _connectionString;
            public SQLHelper(IConfiguration configuration)
            {
                _configuration = configuration;
                _connectionString = _configuration.GetConnectionString("DefaultConnection");
            }
    
            public int ExecuteNonQuery(SqlConnection conn, string cmdText, SqlParameter[] cmdParms, SqlTransaction trans)
    
            {
                return ExecuteNonQuery(conn, CommandType.Text, cmdText, cmdParms, trans);
            }
    
            public int ExecuteNonQuery(SqlConnection conn, CommandType cmdType, string cmdText, SqlParameter[] cmdParms, SqlTransaction trans)
            {
                SqlCommand cmd = conn.CreateCommand();
                int val = 0;
                using (cmd)
                {
                    PrepareCommand(cmd, conn, trans, CommandType.Text, cmdText, cmdParms);
                    val = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                }
                return val;
            }
    
            public SqlDataReader ExecuteReader(SqlConnection conn, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
            {
                SqlCommand cmd = conn.CreateCommand();
                PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
                var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                return rdr;
            }
    
    
            public DataTable ExecuteDataTable(SqlConnection conn, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
            {
                System.Data.DataTable dt = new DataTable();
                SqlCommand cmd = conn.CreateCommand();
                PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
                System.Data.SqlClient.SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                return dt;
            }
    
            public object ExecuteScalar(SqlConnection conn, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
            {
                SqlCommand cmd = conn.CreateCommand();
                PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
                object val = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                return val;
            }
    
            #region private
            private void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] commandParameters)
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                //cmd.Connection = conn;
                cmd.CommandText = cmdText;
                if (trans != null)
                {
                    cmd.Transaction = trans;
                }
                cmd.CommandType = cmdType;
                //attach the command parameters if they are provided
                if (commandParameters != null)
                {
                    AttachParameters(cmd, commandParameters);
                }
            }
            private void AttachParameters(SqlCommand command, SqlParameter[] commandParameters)
            {
                foreach (SqlParameter p in commandParameters)
                {
                    //check for derived output value with no value assigned
                    if ((p.Direction == ParameterDirection.InputOutput) && (p.Value == null))
                    {
                        p.Value = DBNull.Value;
                    }
                    command.Parameters.Add(p);
                }
            }
            #endregion
    
            #region  Default connection
            public DataTable ExecuteDataTable(string cmdText, SqlParameter[] cmdParms)
            {
                DataTable dataTable;
                using (var sqlConnection = GetDefaultSqlConnection())
                {
                    dataTable = this.ExecuteDataTable(sqlConnection, CommandType.Text, cmdText, cmdParms);
                }
                return dataTable;
            }
    
            public int ExecuteNonQuery(string cmdText, SqlParameter[] cmdParms)
            {
                int rowsAffected;
                using (var sqlConnection = GetDefaultSqlConnection())
                {
                    rowsAffected = ExecuteNonQuery(sqlConnection, cmdText, cmdParms, null);
                }
                return rowsAffected;
            }
    
            public object ExecuteScalar(string cmdText, SqlParameter[] cmdParms)
            {
                object retObj;
                using (var sqlConnection = GetDefaultSqlConnection())
                {
    
                    retObj = ExecuteScalar(cmdText, cmdParms);
                }
                return retObj;
            }
            #endregion
    
            public SqlConnection GetDefaultSqlConnection()
            {
                return new SqlConnection(_connectionString);
            }
    
        }

    添加服务

    Startup->ConfigureServices

    services.AddTransient(typeof(SQLHelper));

    调用测试

        [Route("api/[controller]")]
        [ApiController]
        public class ValuesController : ControllerBase
        {
            SQLHelper _sqlHelper;
            public ValuesController(SQLHelper sqlHelper)
            {
                _sqlHelper = sqlHelper;
            }
            // GET api/values
            [HttpGet]
            public ActionResult<DataTable> Get()
            {
                return _sqlHelper.ExecuteDataTable("SELECT * FROM SYSUSER", null);
            }
    
    
            // GET api/update
            [HttpGet("update")]
            public ActionResult<int> Update()
            {
                SqlParameter[] cmdParms = new SqlParameter[] { new SqlParameter("@PASSWORD", DBNull.Value) };
                return _sqlHelper.ExecuteNonQuery("UPDATE SYSUSER SET PASSWORD =@PASSWORD WHERE  LOGINNAME='admin'", cmdParms);
            }
    
            // GET api/update
            [HttpGet("UpdateTransaction")]
            public ActionResult<int> UpdateTransaction()
            {
                int rowsAffected = 0;
                SqlParameter[] cmdParms = new SqlParameter[] { new SqlParameter("@PASSWORD", "123456") };
                using (var conn = _sqlHelper.GetDefaultSqlConnection())
                {
                    conn.Open();
                    var transaction = conn.BeginTransaction();
                    try
                    {
                        rowsAffected = _sqlHelper.ExecuteNonQuery(conn, "UPDATE SYSUSER SET PASSWORD =@PASSWORD WHERE  LOGINNAME='admin'", cmdParms, transaction);
                        throw new Exception("test");
                        transaction.Commit();
                    }
                    catch (Exception e)
                    {
                        transaction.Rollback();
                        throw e;
                    }
    
                }
                return rowsAffected;
            }
    
        }

  • 相关阅读:
    python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过autopy实现右键菜单和另存为操作
    python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为
    vue.js移动端app实战3:从一个购物车入门vuex
    vue 做登陆页面 ( 登陆成功后去掉注册和登陆按钮 显示用户名)
    vue中手机号,邮箱正则验证以及60s发送验证码
    从零开始徒手撸一个vue的toast弹窗组件
    vue 更改头像功能实现
    event.srcElement与event.target的区别
    vue中使用axios post上传头像/图片并实时显示到页面
    vue开发:移动端图片上传
  • 原文地址:https://www.cnblogs.com/hts92/p/11298813.html
Copyright © 2020-2023  润新知