第一篇: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://
在此对本帖原创作者,致以最诚挚的谢意!
=============================================
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 Basic、C# 或 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, parm.Value = orderId;if(...){ //添加一个参数
} ExecuteReader(parm,.....);请问应该怎么做呢
最佳答案 int IArticle.Insert(ArticleInfo article){
SqlDbType.Int);
//如果对象存在
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://
在此对本帖原创作者,致以最诚挚的谢意!
=============================================
例子:
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);
第二篇:C# String类常用方法小结剖析
String类常用方法
1、插入字符串:public string Insert(int startIndex,string value
2、删除字符串:public string Remove(int startIndex public string Remove(int startIndex,int count
3、替换字符串:public string Replace(char oldChar,char newChar public string Replace(string oldString,string newString
4、分割字符串:public string[] Split(char[] separator public string[] Split(char[] separator,int count public string[] Split(char[] separator,StringSplitOptions options public string[] Split(string[] separator,StringSplitOptions options public string[] Split(char[] separator,int count,StringSplitOptions options public string[] Split(string[] separator,int count,StringSplitOptions options 其中,options参数指定字符串分割选项,取值可为StringSplitOptions.None或StringSplitOptions.RemoveEmptyEntries,前者表示返回包含空字符串的数组,后者表示返回不包括空字符串的数组
5、填充字符串(指定或不指定(空白符)字符填充原串到指定长度):public string PadLeft(int totalWidth public string PadLeft(int totalWidth,char paddingChar public string PadRight(int totalWidth public string PadRight(int totalWidth,char paddingChar
6、比较字符串:静态方法——Compare(和CompareOrdinal(;实例方法——CompareTo(。其中,Compare(方法中可含参数有:strA(string指定待比较字符串,igonreCase(bool指定是否要忽略大小写,comparisonType(StringComparison指定比较时所使用的区域、大小写和排序规则,cluture(CultureInfo提供特定于区域性的比较设置信息,indexA(int设置比较子字符串的位置,length(int指定比较子字符串中字符的最大数量。
7、连接字符串:public static string Concat(Object arg0 public static string Concat(params Object[] args public static string Concat(params string[] values public static string Concat(Object arg0,Object arg1 public static string Concat(string str0,string str1 public static string Concat(Object arg0,Object arg1,Object arg2 public static string Concat(string arg0,string arg1,string arg2 public static string Concat(Object arg0,Object arg1,Object arg2,Object arg3 public static string Concat(string arg0,string arg1,string arg2,string arg3 其中,arg0……arg3表示连接对象 public static string Join(string separator,string[] value public static string Join(string separator,string[] value,int
startIndex,int count 其中,startIndex指定对value进行连接的开始下标,count指定连接的字符串数
8、处理字符串中的空白:public string Trim(public string Trim(params char[] trimChars public string TrimEnd(params char[] trimChars public string TrimStart(params char[] trimChars 其中,trimChars指定移除的字符数组;TrimStart从字符串开始位置移除与指定字符数组中相同的字符;TrimEnd从结尾处移除与指定字符数组中相同的字符
9、转换字符串大小写:public string ToUpper(public string ToUpper(CultureInfo culture public string ToLower(public string ToLower(CultureInfo culture 另:public string ToUpperInvariant(public string ToLowerInvariant(使用当前操作系统所在区域的大小写规则进行转换
10、匹配和检索字符串:public bool Contains(string value public bool StartsWith(public bool EndsWith(其中,StartsWith和EndsWith方法可指定的参数有:comparisonType(StringComparison指定比较方式,igonreCase(bool指定是否要忽略大小写,cluture(CultureInfo提供特定于区域性的比较设置信息 public int IndexOf(char/string value,…… public int LastIndexOf(char/string value,…… 可指定的参数有:startIndex(int指定查找的起始位置,count(int指定被查找的字符数量,comparisonType(StringComparison指定所使用的区域、大小写和排序规则 public int IndexOfAny(char[] anyOf,…… public int LastIndexOfAny(char[],anyOf,……
11、获取子字符串:public string Substring(int startIndex public string Substring(int startIndex,int length
12、格式化字符串:public static string Format(string format,Object arg0 public static string Format(stirng format,params Object[] args public static string Format(IFormatProvider provider,string format,params Object[] args public static string Format(string format,Object arg0,Object arg1 public static string Format(string format,Object arg0,Object arg1,Object arg2 其中,provider(IFormatProvider提供特定的区域性格式设置信息
13、编码字符串:使用Encoding类中不同编码方式的GetBytes(string initValue方法,其返回值为byte数组。如:Encoding.UTF8.GetBytes(s;
第三篇:ADONET使用方法小结
一、ADO.NET概述
NET 在数据存取方面做了很大的调整。在.NET 框架下,数据存取是由ADO.NET来完成的,这是一个ADO的改进和完善版本。它最显著的变化是其完全基于XML。
ADO.NET附带了4个数据库客户命名空间,一个用于SQL Server,另一个用于0racle,第3个用于ODBC数据源,第四个用于通过OLEBC实现的数据库。如果数据库不是SQL Server或Oracle,就应使用OLE DB,除非还能使用ODBC。
AD0.NET类最重要的新特性是:它们是以断开连接的方式工作,这在目前以Web为中心的环境中是非常重要的。我们常常把服务(例如在线书店)构建为连接一个服务器。检索一些数据,再在客户机上处理这些数据,之后重新连接服务器,把数据传送回去,进行处理。AD0.NET的断开连接的本质就可以实现这种操作。
二、ADO.NET包含的类
SqlConnection 类
和数据库交互,你必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。connection对象会被command对象使用,这样就能够知道是在哪个数据库上面执行命令。
与数据库交互的过程意味着你必须指明想要发生的操作。这是依靠command对象执行的。你使用command对象来发送SQL语句给数据库。command对象使用connection对象来指出与哪个数据库进行连接。你能够单独使用command对象来直接执行命令,或者将一个command对象的引用传递给SqlDataAdapter,它保存了一组能够操作下面描述的一组数据的命令。COMMAND对象
成功与数据建立连接后,就可以用COMMAND对象来执行查询,修改,插入,删除等命令;COMMAND对象常用的方法有ExecuteReader方法,ExecuteScalar()方法ExecuteNonQuery()方法;插入数据可用ExecuteNOnQuery()方法来执行插入命令。sqlDataReader类
许多数据操作要求你只是读取一串数据。data reader对象允许你获得从command对象的SELECT语句得到的结果。考虑性能的因素,从data reader返回的数据都是快速的且只是“向前”的数据流。这意味着你只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果你需要操作数据,更好的办法是使用DataSet。DataSet对象
DataSet对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。你甚至能够定义表之间的关系来创建主从关系(parent-child relationships)。DataSet是在特定的场景下使用――帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有Data Providers使用的对象,因此它并不像Data Provider一样需要特别的前缀。SqlDataAdapter类
某些时候你使用的数据主要是只读的,并且你很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。Data adapter通过断开模型来帮助你方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候,Data adapter 填充(fill)DataSet对象。data adapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用。另外,data adapter包含对数据的SELECT,INSERT,UPDATE和DELETE操作的command对象引用。你将为DataSet中的每一个table都定义data adapter,它将为你照顾所有与数据库的连接。所有你将做的工作是告诉data adapter什么时候装载或者写入到数据库。DataTable类
DataTable 是一个数据网格控件。它可以被应用在 VB 和 ASP 上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。
DataTable的实例化以及添加列:
DataTable dt = new DataTable();
dt.Columns.Add(“ID”);
dt.Columns.Add(“Name”);
DataRow dr = dt.NewRow();
object[] objs = { 1, “Name” };
dr.ItemArray = objs;
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;
三、总结
ADO.NET是与数据源交互的.NET技术。有许多的Data Providers,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,你将使用相似的对象与数据源进行交互。SqlConnection对象管理与数据源的连接。SqlCommand对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用SqlDataReader。如果想使用断开数据,使用DataSet并实现能进行读取或者写入数据源的SqlDataAdapter。
三、开发实例
1、在sql server 2000服务器上建立学生---课程数据库
2、连接sql server 2000数据库
string connString = “server=127.0.0.1;uid=sa;password=1980615;database=student”;SqlConnection connection = new SqlConnection(connString);try { connection.Open();MessageBox.Show(“恭喜你,数据库连接成功!”);connection.Close();} catch(Exception er){ MessageBox.Show(er.Message.ToString());}
3、添加数据
string connString = “server=127.0.0.1;uid=sa;password=1980615;database=student”;SqlConnection connection = new SqlConnection(connString);connection.Open();string commandString = “insert into student values('95110','李刚','男',20,'CS')”;SqlCommand cmd = new SqlCommand(commandString,connection);int i=(int)cmd.ExecuteNonQuery();if(i ==1){ MessageBox.Show(“恭喜你,数据添加成功”);} else { MessageBox.Show(“数据添加失败”);} connection.Close();
4、修改数据
string connString = “server=127.0.0.1;uid=sa;password=1980615;database=student”;SqlConnection connection = new SqlConnection(connString);connection.Open();string commandString = “update student set sage=21,ssex='女' where sno='95110'”;SqlCommand cmd = new SqlCommand(commandString, connection);int i =(int)cmd.ExecuteNonQuery();if(i == 1){ MessageBox.Show(“恭喜你,数据修改成功”);} else { MessageBox.Show(“数据修改失败”);} connection.Close();
5、删除数据
string connString = “server=127.0.0.1;uid=sa;password=1980615;database=student”;SqlConnection connection = new SqlConnection(connString);connection.Open();string commandString = “delete from student where sno='95110'”;SqlCommand cmd = new SqlCommand(commandString, connection);int i =(int)cmd.ExecuteNonQuery();if(i == 1){ MessageBox.Show(“恭喜你,数据删除成功”);} else { MessageBox.Show(“数据删除失败”);} connection.Close();
6、查询数据
string connString = “server=127.0.0.1;uid=sa;password=1980615;database=student”;SqlConnection connection = new SqlConnection(connString);string commandString = “select * from student”;SqlDataAdapter ada = new SqlDataAdapter(commandString, connection);DataSet ds = new DataSet();ada.Fill(ds);this.studentInfo.DataSource = ds.Tables[0].DefaultView;
第四篇:C#实训个人小结
经过4个礼拜的实训,让我受益匪浅,给我收获最大的是我觉得很多工作需要我去摸索和探讨,要不怕吃苦,勇于激流勇进,有的工作虽然单挑又重复,但这是磨练意志最有效的方法,我告诫自己要认真完成,对每项实训任务都要他看成是对自己的一次考核,做到每一件事的过程中遇到困难,一定要争取不抛弃,不放弃,坚持“战斗”,只要希望还在,胜利一定属于我们。
我们这次实训的内容是“学生成绩管理系统”,首先要感谢陪伴我们4个礼拜对我们精心指导的老师,帮助我们在实训过程中解决了很多我们解决不了的问题,让我们能继续的完成接下来的内容和让我们的实训成果有了圆满的成功。在学习的过程中并不是一帆风顺的,在这之中,因为要操作的东西很多,有时错一步,后面的结果就无法显示,而自己的计算机又太差,根本检查不出来是哪里出了错!这时候,老师都会耐心的过来帮助我,我很感谢老师也很感谢学校能安排这么优秀的老师来教我们!还有就是团队的力量,对于一个大的软件系统,不是一个人就能完成的,他需要小组成员之间的团结协作,尽管一开始我们小组之间团员的意见不是很统一,但大家各抒己见,吧自己的想法提出来,然后集思广益,把大家认为最好的意见说出来,最后终于完成了“学生成绩管理系统”的实训。
在这次实训过程中,老师还在期间让我们小组各自展示我们的实训成果,由其他小组提出意见,取长补短,对于别的小组做的比我们好的地方,我们要虚心学习,不好的地方我们会一起想解决问题的办法。这对于我们未来走向社会具有一定的锻炼性质。
作为学生,我们更多的是课本的知识的理解,理论的优势是我们的特色,但是怎样将理论结合实际却是摆在我们面前的难题。有些知识虽然我们学过,但是要把它运用到系统中的过程中还出现了很多问题,比如对于控件ListView和DataGridView的使用,在基于多表查询的时候,使用DataGridView这个控件就难以实现在数据库里的多张表的更新,后来我们还是选择了ListView这个控件。从这里让我知道了,只是的学习是没有止境的,我们只有在不断的学习中了解更多,并且能够把所学的知识举一反三,这样我们才能更好的吧实训项目做得更好。我觉得学习了这个,对我参加工作后制表、创建查询、数据分析和材料演示都有很大的作用,这样,我们能更清楚的了解信息并进行分析。
当然实习中还有着更多的感触,包括学习,生活各个方面。就学习而言,专业实训它更偏重于应用,更加细致,要求也更加严格。在实际中实现自己的理想,必需不断的增加自己的能力,做事情更加专注。就生活而言,专业学习展示给我们看各个不同的小组的实训结果,让我们知道了要善于学习他人的优点。
上面的认识都是正面的,也是自己受益的主要部分,但就个人而言,本次的专业实训更多的是让自己认识到自己的不足。通过此次的实训,更多的是对大二一学期的回顾和反省。总的来说,我们这一次实习是比较成功的,大家都能学习到了很多在校园、在课堂上、课本上学不到的东西,也了解很多和懂得了做人的道理,特别是体会到生活中的艰辛和找工作的不容易。
做软件这个东西不能着急,越是着急对我们的学习就越是不利。把心态摆平稳,从简单做起,不能急于求成。在学习过程中会有很多时候心情很郁闷,是在学不下去了,不过坚持一下就好了,重在坚持嘛,没有什么不可能过去的。还有就是平时要注意多积累这样在以后用知识的时候就不愁没有资源了。
四个星期的实训课很快结束了,我发现我对计算机有了新的认识,以前只知道玩游戏、娱乐和简单的应用。通过这次的实训,我了解到,要真真正正的掌握计算机程序还不是一件简单容易的事儿,但真正掌握后,它带个我们的将是无穷的便捷与科技,我喜欢高端便捷的生活。我希望我能做计算机这个万能机器人的主人而不是奴隶,我会努力加油的!感谢学校,感谢老师给我的帮助,让我的思想、技能又上了一个台阶!感谢!加油!
软件1121
朱明红
第五篇:Tibco EMS 初级使用方法小结
Tibco EMS 初级使用方法小结
Tibco EMS 初级使用方法小结 TIBCO Enterprise Message Service 是一个消息服务器产品,它采用C语言编写,完全支持JMS的通讯协议,在运行速度和消息吞吐量上表现非常出色,对于Windows、Linux、Mac、AIX平台都提供支持,关于这个产品,我也是刚刚接触不久,以下是本人一段时间使用的一个小结:
1、将EMS设置为控制访问模式
默认安装好的EMS对于消息队列(Queue)或者消息主题(Topic)的访问是不需要口令的,显然在任何生产环境中都不会让这样的设置存在,我们第一步要做的事情就是打开服务的访问控制:
启动 EMS Administration Tool,使用管理员(admin)身份登录,密码初始为空,敲入命令tcp://192.168.1.23:7222> set server authorization=enabled
Server parameters have been changed2、更改管理员登录口令
设置好了访问控制,下一步就是修改管理员密码: tcp://192.168.1.23:7222> set password admin admin Password of user 'admin' has been modifiedset password 是一个控制命令,这句话的意思是将用户 admin 的密码设置为 admin。
3、创建用户和用户组
创建用户组 emsgroup:
tcp://192.168.1.23:7222> create group emsgroup Group 'emsgroup' has been created
创建用户 emsuser:
tcp://192.168.1.23:7222> create user emsuser password=emsuser User 'emsuser' has been created
将用户添加至用户组中:
tcp://192.168.1.23:7222> add member emsgroup emsuser Group 'emsgroup' has been modified
查看用户是否添加成功:
tcp://192.168.1.23:7222> show group emsgroup Group:
emsgroup Description: Users:
以上显示组 emsgroup 中有一个用户,显然就是 emsuser 这个用户。
4、创建消息队列
创建一个名叫 nanjing 的消息队列: tcp://192.168.1.23:7222> create queue nanjing Queue 'nanjing' has been created
5、为用户分配访问权限
为用户 emsuser 分配 receive,send,browse 的权利:
tcp://192.168.1.23:7222> grant queue nanjing emsuser receive,send,browse Permissions have been changed
好了,现在就可以使用 JMS 客户端向服务器的7222端口上发送消息了,使用的用户名就是我们
刚才设置的 emsuser 口令是 emsuser,消息队列的名称:nanjing。