⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_28733.htm

📁 一些关于vc的问答
💻 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//点击后,要在txt中显示ID的最后一个记录的id号<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void button1_Click(object sender, System.EventArgs e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlCommand sqlcmd = new SqlCommand("SELECT MAX(id) FROM jltab",sqlConnection1);//在jltab表的id列中选出最大值<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlDataReader sdr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlConnection1.Open();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdr = sqlcmd.ExecuteReader();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtjl.Text = sdr["id"].ToString();//将选出的最大值给txtjl.Text,这里系统提示id不正确,为什么呢?<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdr.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlConnection1.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<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&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;@p_userid&nbsp;&nbsp; varchar&nbsp;&nbsp;(14)&nbsp;&nbsp;,<BR>&nbsp;&nbsp;&nbsp;&nbsp;@p_opti_time&nbsp;&nbsp; datetime=null,<BR>&nbsp;&nbsp;&nbsp;&nbsp;@p_record&nbsp;&nbsp; ntext <BR>AS<BR>if @p_opti_time=null <BR>&nbsp;&nbsp;&nbsp;&nbsp;set @p_opti_time=GETDATE( )<BR>insert into&nbsp;&nbsp; dailyrecord<BR>&nbsp;&nbsp;&nbsp;&nbsp;(<BR>&nbsp;&nbsp;&nbsp;&nbsp;userid ,<BR>&nbsp;&nbsp;&nbsp;&nbsp;opti_time,<BR>&nbsp;&nbsp;&nbsp;&nbsp;record&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;) <BR>&nbsp;&nbsp;&nbsp;&nbsp;values<BR>&nbsp;&nbsp;&nbsp;&nbsp;(<BR>&nbsp;&nbsp;&nbsp;&nbsp;@p_userid&nbsp;&nbsp;,<BR>&nbsp;&nbsp;&nbsp;&nbsp;@p_opti_time,<BR>&nbsp;&nbsp;&nbsp;&nbsp;@p_record&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;)<BR><BR>---返回id<BR>return SCOPE_IDENTITY()&nbsp;&nbsp; ----返回你的此次连接数据库时,最后一个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>&nbsp;&nbsp; @Order_UserID char(2),<BR>&nbsp;&nbsp; @Order_From char (2)<BR>)<BR>AS<BR>INSERT INTO YHDD_HEAD<BR>(<BR>&nbsp;&nbsp; Order_UserID,<BR>&nbsp;&nbsp; Order_From,<BR>&nbsp;&nbsp; Order_date<BR>)<BR>VALUES <BR>(<BR>&nbsp;&nbsp; @Order_UserID,<BR>&nbsp;&nbsp;&nbsp;&nbsp;@Order_From,<BR>&nbsp;&nbsp;&nbsp;&nbsp;GETDATE()<BR>)<BR>SELECT @@IDENTITY<BR>GO<BR>我要在程序中得到@@IDENTITY 怎样处理, @@IDENTITY 返回的是关键字<BR>程序如下,怎样修改:<BR>private void Button1_Click(object sender, System.EventArgs e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlCommand com = new SqlCommand("spCreateNewOrder",sqlConnection1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.CommandType =CommandType.StoredProcedure;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.Parameters.Add(new <BR><BR>SqlParameter("@Order_UserID",SqlDbType.Char,2,"Order_UserID"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.Parameters["@Order_UserID"].Value ="03";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.Parameters.Add(new <BR><BR>SqlParameter("@Order_From",SqlDbType.Char,2,"Order_From"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.Parameters["@Order_From"].Value ="02";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlConnection1.Open();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.ExecuteNonQuery();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlConnection1.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlConnection1.Open();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.ExecuteNonQuery();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlConnection1.Close();<BR><BR>为什么不是:<BR>...... <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.Connection.Open();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.ExecuteNonQuery();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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 + -