源码地带 > 电路图 > 电子资料下载 > 电子书籍 >vc > 查看压缩包源码

vc

源代码在线查看: subject_28733.htm

软件大小: 7874 K
上传用户: lanyunhan
关键词: vc
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				序号:28733 发表者:VC#菜鸟 发表日期:2003-01-23 16:09:24
				主题:请高人点拨,如何显示ID值
				内容:如图:
				返回上页访问论坛
				
				
				回复者:VC#菜鸟 回复日期:2003-01-23 17:19:20
				内容:主要利用SELECT的MAX功能,但是值不能传送到txtjl.Text中,故没法显示,请指点!谢谢!!        //点击后,要在txt中显示ID的最后一个记录的id号        private void button1_Click(object sender, System.EventArgs e)        {            SqlCommand sqlcmd = new SqlCommand("SELECT MAX(id) FROM jltab",sqlConnection1);//在jltab表的id列中选出最大值            SqlDataReader sdr;            sqlConnection1.Open();            sdr = sqlcmd.ExecuteReader();            txtjl.Text = sdr["id"].ToString();//将选出的最大值给txtjl.Text,这里系统提示id不正确,为什么呢?            sdr.Close();            sqlConnection1.Close();            }
				
				返回上页访问论坛
				
				
				答案被接受回复者:啊志 回复日期:2003-01-23 19:28:18
				内容:txtjl.Text = sdr["id"].ToString();//将选出的最大值给txtjl.Text,这里系统提示id不正确,为什么呢?你要用别名才行: SqlCommand sqlcmd = new SqlCommand("SELECT MAX(id) AS MAX_ID  FROM jltab",sqlConnection1);//在jltab表的id列中选出最大值....txtjl.Text = sdr["MAX_ID"].ToString();//就行了-----***********--------但是这样返回最后一个ID有问题,问题在于如果数据库并行操作的话,返回的ID不是你刚才加的那个新纪录的ID,因为你不能保证在“添加新纪录”与“找最大的ID”之间别的并行用户添加新纪录我的办法:添加新纪录用存储过程:比如CREATE PROC new_dailyrecord    @p_userid   varchar  (14)  ,    @p_opti_time   datetime=null,    @p_record   ntext ASif @p_opti_time=null     set @p_opti_time=GETDATE( )insert into   dailyrecord    (    userid ,    opti_time,    record         )     values    (    @p_userid  ,    @p_opti_time,    @p_record         )---返回idreturn SCOPE_IDENTITY()   ----返回你的此次连接数据库时,最后一个ID,GO然后用COMMAND返回存储过程的返回值取出来最后显示出来
				
				返回上页访问论坛
				
				
				回复者:VC#菜鸟 回复日期:2003-01-24 09:09:03
				内容:谢谢!我按你说的方法弄了一下,没有想到,一下就弄好了。:)而且,从你的建议当中,我还学到了一些东西,比如“数据库并行操作”的问题(这个问题我确实没有考虑到)。看来,我以后要多多用全局的眼光考虑问题,再次感谢!
				
				返回上页访问论坛
				
				
				回复者:champs 回复日期:2003-01-24 18:34:23
				内容:啊志
				
				返回上页访问论坛
				
				
				回复者:落叶夏日 回复日期:2003-01-29 16:43:08
				内容:存储过程如下:CREATE PROCEDURE spCreateNewOrder(   @Order_UserID char(2),   @Order_From char (2))ASINSERT INTO YHDD_HEAD(   Order_UserID,   Order_From,   Order_date)VALUES (   @Order_UserID,    @Order_From,    GETDATE())SELECT @@IDENTITYGO我要在程序中得到@@IDENTITY 怎样处理, @@IDENTITY 返回的是关键字程序如下,怎样修改:private void Button1_Click(object sender, System.EventArgs e)        {            SqlCommand com = new SqlCommand("spCreateNewOrder",sqlConnection1);            com.CommandType =CommandType.StoredProcedure;            com.Parameters.Add(new SqlParameter("@Order_UserID",SqlDbType.Char,2,"Order_UserID"));            com.Parameters["@Order_UserID"].Value ="03";            com.Parameters.Add(new SqlParameter("@Order_From",SqlDbType.Char,2,"Order_From"));            com.Parameters["@Order_From"].Value ="02";            sqlConnection1.Open();            com.ExecuteNonQuery();            sqlConnection1.Close();                            }1)在存储过程中定义一个output参数例如@a int output将@@IDENTITY赋给@a,并return @a然后用com.Parameters["@a"].Value获得返回的参数,再装箱成你的类型2)明白,我有更好的Object o=com.ExecuteScalar();
				
				返回上页访问论坛
				
				
				回复者:champs 回复日期:2003-01-29 22:07:48
				内容:......            sqlConnection1.Open();            com.ExecuteNonQuery();            sqlConnection1.Close();为什么不是:......             com.Connection.Open();            com.ExecuteNonQuery();            com.Connection.Close();//SqlCommand对象是实现你所需要的功能,??那么打开连接不是应该调用SqlCommand的对象com来Open嘛??..........................................执行....??..........................................关闭.....??
				
				返回上页访问论坛
				
				
				回复者:落叶夏日 回复日期:2003-01-30 11:09:14
				内容:你说的是一样的,在com命令实例中关联了sqlConnection的实例对像,所以实质是一样的
				
				返回上页访问论坛
				
				
				回复者:落叶夏日 回复日期:2003-01-30 11:11:13
				内容:比如你用过: com.Connection = sqlConnection1; com.Connection.Open();//就可以和上面的一样了,在系统数据库的自动设置中已经这样了
				
				返回上页访问论坛
							

相关资源