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