C# 中SqlParameter类的使用方法小结

 C# SqlParameter类的使用方法小结

c#中执行sql语句时传递参数的小经验

 1、直接写入法:

      例如:

             int Id =1;

             string Name="lui";

             cmd.CommandText="insert into TUserLogin values("+Id+",'"+Name+"')";

        因为Id是数值,所以在传递的时候只需要在sql字符串中用"+Id+"即可实现,而   Name是字符串,所以在传递的时候还需要在"+Name+"两边各加一个单引号(')来 实现;

 

 

2、给命令对象添加参数法:

     例如:

            int Id =1;

            string Name="lui";

            cmd.CommandText="insert into TUserLogin values(@Id,@Name)";

          //上条语句中直接在sql语句中写添加的参数名,不论参数类型都是如此.

           SqlParameter  para=new SqlParameter("@Id",SqlDbType.int,4);//生成一个名字为@Id的参数,必须以@开头表示是添加的参数,并设置其类型长度,类型长度与数据库中对应字段相同

           para.Value=Id;//给参数赋值

           cmd.Parameters.Add(para);//必须把参数变量添加到命令对象中去。

           //以下类似

           para=new SqlParameter("@Name",SqlDbType.VarChar,16);

           para.Value=Name;

           com.Parameters.Add(para);

        ...然后就可以执行数据库操作了。

 

声明:本帖转自 http://www.knowsky.com/339188.html

 

在此对本帖原创作者,致以最诚挚的谢意!

 

 

=============================================

 

 SqlParameter用法

SqlParameter[] parameters = { new SqlParameter("@a", "a1"), new SqlParameter("@b", "b1") };

 

            string strReturn = "";

 

            StringBuilder strBulResult = new StringBuilder();

 

 

 

            foreach (SqlParameter parameter in parameters)

 

            {

 

                strBulResult.Append(parameter.ParameterName);

 

                strBulResult.Append(":");

 

                strBulResult.Append(parameter.SqlValue);

 

                strBulResult.Append("/n");

 

            }

 

 

 

            strReturn = strBulResult.ToString();

 

  

声明:本帖转自 http://hi.baidu.com/daxiongmao_adi/blog/item/d7ac6ccdd75348540eb34553.html

 

在此对本帖原创作者,致以最诚挚的谢意!

 

 

=============================================

 

 

SqlParameter用法

 

  关于Sql注入的基本概念,相信不需多说,大家都清楚,经典的注入语句是' or 1=1--

单引号而截断字符串,“or 1=1的永真式的出现使得表的一些信息被暴露出来,如果sql语句是select * from 的话,可能你整个表的信息都会被读取到,更严重的是,如果恶意使用都使用drop命令,那么可能你的整个数据库得全线崩溃。  

 

当然,现在重点不是讲sql注入的害处,而是说说如何最大限度的避免注入问题。

 

 sql注入的存在在最大危害,是sql的执行语句没有和控制语句分开,我们想要select一些东西,但用户可能拼出' or 1=1甚至再加上delete/update/drop,后来是属于控制语句了,所以要避免sql的注入,就必须把查询语句与控制语句分开。

 

SqlParameter给我们提供了一个很好的类,有了它,我们可以不现拼接字符串,也可以不再担心单引号带来的惨剧,因为,这一切会有人来为我们完成的。

 

简单的给个示例

 

传统的查询语句的sql可能为

string sql="select * from users where user_id='"+Request.QueryString["uid"]+"'";

很显然,我们在这里拼接了字符串,这就给sql注入留下了可乘之机。

 

现在,我们要改写这样的语句,使用SqlParameter来做

 

SqlCommand SqlCmd = new SqlCommand(sql, SqlConn);

SqlParameter _userid = new SqlParameter("uid", SqlDbType.Int);

_userid.Value = Request.QueryString["u_id"];

SqlCmd.Parameters.Add(_userid);

 

这样,我们可以保证外接参数能被正确的转换,单引号这些危险的字符也会转义了,不会再对库造成威胁。

 

当然,这仅是一个示例而已,在真实的情况下,可能你还要对 Request.QueryString["u_id"]进行必要的检测与分析,这样才安全

 

所以,使用参数化的sql语句,是一种很好的做法

 

 

 

Dim sql As StringBuilder = New StringBuilder()

            sql.Append("")

            sql.Append("SELECT * FROM test")

            sql.Append(" WHERE  a= @p1 ")           

 

            Dim command As SqlCommand    =    dac.CreateCommand(sql.ToString())  'dac为自己写的类

            Dim param As SqlParameter = New SqlParameter()

            param .ParameterName = "@p1"

            param .SqlDbType = SqlDbType.NVarChar

            param .Value = b       'b为该函数的参数(ByVal b as String)

            command .Parameters.Add(param)

            Dim reader As SqlDataReader = command.ExecuteReader()

 

 

 

 

 

SqlParameter 构造函数

 

SqlParameter 构造函数 (String, SqlDbType, Int32, ParameterDirection, Byte, Byte, String, DataRowVersion, Boolean, Object, String, String, String)

初始化 SqlParameter 类的一个新实例,该类使用参数名、参数的类型、参数的长度、方向、精度、小数位数、源列名称、DataRowVersion 值之一、用于源列映射的布尔值、SqlParameter 的值、此 XML 实例的架构集合所在的数据库的名称、此 XML 实例的架构集合所在的关系架构以及此参数的架构集合的名称。

命名空间: System.Data.SqlClient

程序集: System.Data(在 system.data.dll 中)

 

C#

public SqlParameter (

    string parameterName,

    SqlDbType dbType,

    int size,

    ParameterDirection direction,

    byte precision,

    byte scale,

    string sourceColumn,

    DataRowVersion sourceVersion,

    bool sourceColumnNullMapping,

    Object value,

    string xmlSchemaCollectionDatabase,

    string xmlSchemaCollectionOwningSchema,

    string xmlSchemaCollectionName

)

 

 

参数

parameterName

要映射的参数的名称。

 

dbType

SqlDbType 值之一。

 

size

参数的长度。

 

direction

ParameterDirection 值之一。

 

precision

要将 Value 解析为的小数点左右两侧的总位数。

 

scale

要将 Value 解析为的总小数位数。

 

sourceColumn

源列的名称。

 

sourceVersion

DataRowVersion 值之一。

 

sourceColumnNullMapping

如果源列可为空,则为 true;如果不可为空,则为 false

 

value

一个 Object,它是 SqlParameter 的值。

 

xmlSchemaCollectionDatabase

XML 实例的架构集合所在的数据库的名称。

 

xmlSchemaCollectionOwningSchema

包含此 XML 实例的架构集合的关系架构。

 

xmlSchemaCollectionName

此参数的架构集合的名称。

 

 备注

如果未在 size precision 参数中显式设置 Size Precision,则从 dbType 参数的值推断出它们。

 

SqlParameter

表示 SqlCommand 的参数,也可以是它到 DataSet 列的映射。无法继承此类。

 

有关此类型所有成员的列表,请参阅 SqlParameter 成员。

 

System.Object

   System.MarshalByRefObject

      System.Data.SqlClient.SqlParameter

 

[Visual Basic]

NotInheritable Public Class SqlParameter

   Inherits MarshalByRefObject

   Implements IDbDataParameter, IDataParameter, ICloneable

[C#]

public sealed class SqlParameter : MarshalByRefObject,

   IDbDataParameter, IDataParameter, ICloneable

[C++]

public __gc __sealed class SqlParameter : public

   MarshalByRefObject, IDbDataParameter, IDataParameter, ICloneable

[JScript]

public class SqlParameter extends MarshalByRefObject implements

   IDbDataParameter, IDataParameter, ICloneable

线程安全

此类型的所有公共静态(Visual Basic 中为 Shared)成员是线程安全的。但不保证任何实例成员是线程安全的。

 

备注

参数名称不区分大小写。

 

示例

[Visual Basic, C#, C++] 下面的示例通过 SqlDataAdapter 中的 SqlParameterCollection 集合创建 SqlParameter 的多个实例。这些参数用于从数据源中选择数据并将数据放在 DataSet 中。此示例假定已经用适当的架构、命令和连接创建了 DataSet SqlDataAdapter

 

[Visual Basic]

Public Sub AddSqlParameters()

    ' ...

    ' create myDataSet and myDataAdapter

    ' ...

    myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", SqlDbType.VarChar, 80).Value = "toasters"

    myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", SqlDbType.Int).Value = 239

   

    myDataAdapter.Fill(myDataSet)

End Sub 'AddSqlParameters

 

[C#]

public void AddSqlParameters()

{

// ...

// create myDataSet and myDataAdapter

// ...

 

  myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", SqlDbType.VarChar, 80).Value = "toasters";

  myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", SqlDbType.Int).Value = 239;

  myDataAdapter.Fill(myDataSet);

 

}

 

[C++]

public:

void AddSqlParameters()

{

// ...

// create myDataSet and myDataAdapter

// ...

 

  myDataAdapter->SelectCommand->Parameters->Add(S"@CategoryName", SqlDbType::VarChar, 80)->Value = S"toasters";

  myDataAdapter->SelectCommand->Parameters->Add(S"@SerialNum", SqlDbType::Int)->Value = __box(239);

  myDataAdapter->Fill(myDataSet);

 

}

 

[JScript] 没有可用于 JScript 的示例。若要查看 Visual BasicC# C++ 示例,请单击页左上角的“语言筛选器”按钮

 

要求

命名空间: System.Data.SqlClient

 

平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版

 

程序集: System.Data ( System.Data.dll )

 

使用SqlParameter

 

SqlParameter[] p =

{

SqlHelper.MakeInParam("@EntryID",SqlDbType.Int,4,ev.EntryID),

SqlHelper.MakeInParam("@BlogID",SqlDbType.Int,4,ev.BlogID),

SqlHelper.MakeInParam("@URL",SqlDbType.NVarChar,255,DataHelper.CheckNull(ev.ReferralUrl)),

SqlHelper.MakeInParam("@IsWeb",SqlDbType.Bit,1,ev.PageViewType)

};

SqlHelper.ExecuteNonQuery(conn,CommandType.StoredProcedure,"blog_TrackEntry",p);

 

答疑:SqlParameter赋值之后怎么添加值

SqlCommand我知道用add

但我想问的是   SqlParameter

例如

SqlParameter   parm   =   new   SqlParameter(PARM_ORDER_ID,   SqlDbType.Int);

parm.Value   =   orderId;

之后能不能再改parm添加一个值

因为我写了个方法是传递SqlParameter类型的参数

但有时要做些判断

SqlParameter   parm   =   new   SqlParameter(PARM_ORDER_ID,   SqlDbType.Int);

parm.Value   =   orderId;

if(...)

{

//添加一个参数

}

ExecuteReader(parm,.....);

请问应该怎么做呢

 

最佳答案        int IArticle.Insert(ArticleInfo article)

        {

            //如果对象存在

            if (article.ID != -1)

                return -1;

            else

                article.ID = TableHelper.GetSequence(SQLHelper.ConnectionString, "Article", "ID");

            //统计执行成功的数量

            int successCount = 0;

            string SQL_THIS = SQL_INSERT_ARTICLE;

            SqlParameter[] paras = GetParas();

            paras[0].Value = article.ID;

            paras[1].Value = article.Title;

            paras[2].Value = article.DateAdded;

            paras[3].Value = article.Text;

            paras[4].Value = article.SourceUrl;

            paras[5].Value = article.PostType;

            paras[6].Value = article.Author;

            paras[7].Value = article.Email;

            paras[8].Value = article.SourceName;

            paras[9].Value = article.BlogID;

            paras[10].Value = article.CategoryID;

            paras[11].Value = article.Summary;

            paras[12].Value = article.IsBySummary;

            paras[13].Value = article.DateUpdated;

            paras[14].Value = article.TitleUrl;

            paras[15].Value = article.FeedBackCount;

            paras[16].Value = article.PostConfig;

            paras[17].Value = article.EntryName;

            paras[18].Value = article.KeyWord;

            SqlConnection conn = new SqlConnection(SQLHelper.ConnectionString);

            successCount = SQLHelper.ExecuteNonQuery(conn, CommandType.Text, SQL_THIS, paras);

            return successCount;

        }

 

 

声明:本帖转自 http://www.cnblogs.com/angelfeather/articles/1225902.html

在此对本帖原创作者,致以最诚挚的谢意!

 

 =============================================

 

例子:

 

SqlParameter[] paraList = new SqlParameter[7];

 

paraList[0] = new SqlParameter( "@userName ", SqlDbType.VarChar, 50);

paraList[0].Value = personModel.UserName;

paraList[1] = new SqlParameter( "@account ", SqlDbType.VarChar, 100);

paraList[1].Value = personModel.Account;

paraList[2] = new SqlParameter( "@pwd ", SqlDbType.VarChar, 100);

paraList[2].Value = personModel.Pwd;

paraList[3] = new SqlParameter( "@unitID ", SqlDbType.VarChar, 20);

paraList[3].Value = personModel.UnitID;

paraList[4] = new SqlParameter( "@email ", SqlDbType.VarChar, 100);

paraList[4].Value = personModel.Email;

paraList[5] = new SqlParameter( "@officeTel ", SqlDbType.VarChar, 20);

paraList[5].Value = personModel.OfficeTel;

paraList[6] = new SqlParameter( "@mobile ", SqlDbType.VarChar, 20);

paraList[6].Value = personModel.Mobile;

 

return sd.ExecuteNonQuery( "UP_Person_ADD ", paraList);

 

声明:本帖转自 http://hljncxjh.blog.163.com/blog/static/7616708200862085248668/

 

在此对本帖原创作者,致以最诚挚的谢意!

 

=============================================

 

 

sqlparameter问题,解决参考方法参见网址:

 

http://topic.csdn.net/t/20050902/15/4246228.html

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
学习以c#的必备书 本书介绍了如何使用Visual C++ 6.0编写Windows应用程序。全书内容全面、结构清晰、由浅入深、注重实用,并结合了大量的实例,以方便读者理解。本书既包含菜单、鼠标、键盘等基本操作,又包含图形编程、Internet程序设计、数据库编程等高级主题。每章讲述一个主题,在展示知识点的同时,提供具体的演示实例,最后两章详细讲解了两个综合实例,以使读者对Visual C++编程技术有整体的认识。 目 录 第一篇 Visual C++基础 第1章 Visual C++集成开发环境 2 1.1 Visual C++的版本 2 1.2 安装Visual C++ 6.0 3 1.3 Visual C++集成开发环境 6 1.3.1 菜单栏 7 1.3.2 工具栏 11 1.3.3 工作区窗口 13 1.3.4 输出窗口 14 1.4 编写第一个程序Hello World 14 1.4.1 创建Hello World工程 15 1.4.2 编译并执行程序 16 1.5 小结 16 第2章 使用Visual C++创建基本应用程序 17 2.1 理解Visual C++工程 17 2.2 Visual C++应用程序的型 18 2.2.1 控制台应用程序 18 2.2.2 基于对话框的应用程序 19 2.2.3 单文档应用程序 19 2.2.4 多文档应用程序 19 2.2.5 基于HTML文档的应用程序 19 2.3 创建应用程序框架 20 2.3.1 创建基于对话框的应用程序 20 2.3.2 创建单文档应用程序 21 2.3.3 创建多文档应用程序 23 2.3.4 创建基于HTML的应用程序 24 2.4 小结 25 第3章 面向对象程序设计基础 26 3.1 面向过程与面向对象 26 3.1.1 面向过程的问题 26 3.1.2 面向对象的特性 27 3.2 C++的基本概念 27 3.2.1 结构体与 27 3.2.2 与对象 29 3.2.3 的声明、定义和实现 29 3.2.4 成员变量 31 3.2.5 成员函数 32 3.2.6 静态成员 34 3.2.7 this指针 35 3.3 构造函数 37 3.3.1 使用构造函数的原因 37 3.3.2 构造函数的使用 37 3.3.3 重载构造函数 40 3.3.4 析构函数 41 3.4 继承 43 3.4.1 继承的概念 43 3.4.2 继承的工作机制 43 3.4.3 公有继承 44 3.4.4 私有继承 46 3.4.5 保护继承 47 3.4.6 多重继承 49 3.5 异常处理 51 3.5.1 异常的概念 51 3.5.2 异常处理机制 51 3.5.3 基本异常处理方法 52 3.5.4 多个异常处理方法 54 3.6 小结 56 第4章 Visual C++调试技术 57 4.1 Debug与Release 57 4.2 调试的过程 58 4.2.1 设置断点 58 4.2.2 控制程序的运行 60 4.3 使用查看工具 60 4.3.1 弹出式调试信息泡泡 61 4.3.2 变量窗口 61 4.3.3 观察窗口 61 4.3.4 快速查看窗口 62 4.3.5 内存查看窗口 62 4.3.6 寄存器窗口 62 4.3.7 调用堆栈窗口 63 4.4 其他调试技术 63 4.4.1 TRACE宏 63 4.4.2 ASSERT宏 64 4.4.3 VERIFY宏 64 4.5 小结 64 第二篇 Windows编程 第5章 Windows程序设计 66 5.1 Windows编程简介 66 5.1.1 Windows API概述 66 5.1.2 Windows应用程序的常用术语 69 5.2 Windows应用程序运行机制 71 5.2.1 生成Windows应用程序框架 71 5.2.2 在Windows应用程序添加代码 71 5.2.3 编译并执行程序 74 5.3 程序入口:WinMain()函数 74 5.3.1 WinMain()函数的定义 75 5.3.2 定义和注册窗口 76 5.3.3 创建窗口 77 5.3.4 显示和更新窗口 78 5.3.5 消息循环 78 5.4 窗口过程函数和消息处理 80 5.4.1 窗口过程函数 80 5.4.2 常用消息的处理 82 5.5 小结 84 第6章 MFC编程概述 85 6.1 MFC概述 85 6.1.1 MFC设计原理 85 6.1.2 MFC特点 86 6.1.3 MFC AppWizard向导 86 6.2 MFC层次结构设计 88 6.2.1 单文档应用程序的构成 88 6.2.2 CObject 90 6.2.3 CCmdTarget
总结: 1、关于C#的知识 (1)、文件输入输出—数据流 1、FileStream 例子: SqlDataReader reader = job.WriteFileToTxt(); FileStream jobStream = new FileStream(@fileName,FileMode.Open,FileAccess.ReadWrite);//覆盖 //FileStream jobStream = new FileStream(@fileName, FileMode.Append, FileAccess.Write);//追加 StreamWriter streamw = new StreamWriter(jobStream); string outfiles = null; streamw.WriteLine("此次任务信息如下:"); streamw.WriteLine("outfiles");//读取完毕后换行 reader.Close(); streamw.Close(); jobStream.Close(); 数据流一定要用try/catch语句块包起来,同时,例子的fileName是文件路径,如果是*.txt之的则默认存储在程序 的文件夹下 FileMode有很多枚举成员,其 1)Append是打开现有文件或者创建新文件,其只能和FileAccess.Write一起使用; 2)Create是如果文件不存在,则使用CreateNew,否则使用Truncate,其要求FileIOPermissionAccess.Write; 3)CreateNew创建新文件,要求FileIOPermissionAccess.Write,如果文件存在则异常; 4)Open打开现有文件,能力取决于FileAccess的值(Read,Write,ReadWrite),如果文件存在则异常; 5)OpenOrCreate打开或创建,FileAccess.Read--FileIOPermissionAccess.Read,FileAccess.Write/ReadWrite-- FileIOPermissionAccess.Write,FileAccess.Append--FileIOPermissionAccess.Append; 6)Truncate打开现有文件,文件一旦打开将被截断为零字节,试图从使用Truncate打开的文件进行读取将异常 注:SqlDataReader使用后一定要关闭 2、写文本文件 string text = Console.ReadLine(); StreamWriter streamw = File.CreateText(@"E:\test3.txt"); streamw.WriteLine(text); streamw.Close(); 读取文本文件 string txt = ""; StreamReader sr = new StreamReader(@"E:\test.txt"); while (!sr.EndOfStream) { string str = sr.ReadLine(); txt += str + "\n"; } sr.Close(); Console.Write(txt); Console.Read(); (2)、产品的框架 1)Model:对象层,制定对象的属性和方法; 2)IDAL:接口层,定义在SQLDAL需要使用方法; 3)SQLDAL:数据持久层,实现接口方法,用DBUtility包装的SQL方法操作数据库; 4)BLL:业务逻辑层,定义调用SQLDAL方法,被WEB的事件调用,联系数据持久层和WEB表示层,间桥梁 ; 5)DALFactory:创建接口型的CREATE方法,在SQLDAL创建接口对象; 6)DBUtility:创建各种SQL方法,实现数据的调用; 7)WEB:表示层,设计页面格式(HTML)和实现各种事件(JavaScript) (3)c#执行sql语句时传递参数的小经验 1> 直接写入法: 例如: int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values("+Id+",'"+Name+"')"; 因为Id是数值,所以在传递的时候只需要在sql字符串用"+Id+"即可实现,而Name是字符串,所以在传递的时候还需 要在"+Name+"两边各加一个单引号(')来 实现; 2>给命令对象添加参数法: 例如: int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values(@Id,@Name)"; //上条语句直接在sql语句写添加的参数名,不论参数型都是如此. SqlParameter para=new SqlParameter("@Id",SqlDbType.int,4);//生成一个名字为@Id的参数,必须以@开头表 示是添加的参数,并设置其型长度,型长度与数据库对应字段相同 para.Value=Id;//给参数赋值 cmd.Parameters.Add(para);//必须把参数变量添加到命令对象去。 //以下似 para=new SqlParameter("@Name",SqlDbType.VarChar,16); para.Value=Name; com.Parameters.Add(para); 然后就可以执行数据库操作了。
水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文以VS2005简称)集成在一起。喜欢水晶报表的朋友可以方便使用了。我把水晶报表在vs2005的使用方法总结一下,供大家参考。 首先介绍一下我用的软件环境:Microsoft Visual Studio 2005;Microsoft SQL Server 2005 【数据用例】 服务器:SQLEXPRESS 数据库名:Test 数据库表:T 数据: 图1 【说明】 水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PUSH)。拉模式:在水晶报表生成时的数据源是从水晶报表文件SQL语句从数据库提取的,在编程时不用重写SQL语句,但要加上登录信息(具体方法,后面介绍)。推模式:在水晶报表生成时的数据源,是用编程时重写水晶报表SQL语句而生成的dataset对像。也就是说,推模式是用dataset组装水晶报表。 水晶报表组件介绍。水晶报表在VS2005有两种组件,在WEB项目是分别是CrystalReportSource,CrystalReportViewer。在FORM项目里是分别是crystalReport,CrystalReportViewer。 CrystalReportSource,crystalReport是水晶报表的数据提供者;CrystalReportViewer是水晶报表的浏览器。另外还要介绍一下水的报表的文件是以rpt为扩展名的文件,该文件可以用VS2005生成。 下面分别介绍具体操作方法: 拉模式(PULL): 在拉模式如要在水晶报表SQL语句加上条件参数时要用{?参数名}方式给出。例:“Select T1, T2, T3 FROM T Where T1='{?parm}'” parm就是参数名 以下例子所用到的水晶报表文件使用SQL语句是“Select T1, T2, T3 FROM T Where T1='{?parm}'” parm就是参数名。 【WEB方式下】 using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; ///<summary> ///功能:拉模式提取水晶报表 ///个人主页:http://www.dzend.com/ ///</summary> ///<param ></param> ///<param ></param> protected void Button_pull_Click(object sender, EventArgs e) { // CrystalReport.rpt是水晶报表文件的名称;CrystalReportSource1是从工具箱加到页面上的水晶报表数据源对像。 CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt")); // SetDatabaseLogon 拉模式必须用这个方法来设置登录信息,参数一:用户名;参数二:密码;参数三:服务器;参数四:数据库名 CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "123456", @"SYWZSWL\SQLEXPRESS", "Test"); //给水晶报表传参数,参数一:是参数名,参数二:参数值; CrystalReportSource1.ReportDocument.SetParameterValue("Title", "这是一个测试报表"); CrystalReportSource1.ReportDocument.SetParameterValue("Parm", "1"); //绑定水晶报表数据源。 CrystalReportSource1.DataBind(); // CrystalReportViewer1是水晶报表浏览器,下面是给该浏览器赋上对像 CrystalReportViewer1.ReportSource = CrystalReportSource1; CrystalReportViewer1.DataBind(); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值