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

📄 subject_43484.htm

📁 vc
💻 HTM
字号:
<p>
序号:43484 发表者:桔子香水 发表日期:2003-06-11 15:16:28
<br>主题:关于ESQL/C调用存储过程的问题,请大家帮帮我!
<br>内容:我想用ESQL/C调用以下两个存储过程:<BR>EXEC sp_detach_db @dbname = 'pubs' <BR>EXEC sp_attach_single_file_db @dbname = 'pubs', <BR>@physname = 'c:\Program Files\Data\pubs.mdf' <BR><BR>请问该如何写?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:kf 回复日期:2003-06-11 16:08:52
<br>内容:ESQL/C:E(embebded)是嵌入的意思,把SQL嵌入到C语言中,<BR>6.1 一个嵌入SQL语言的简单例子<BR>&nbsp;&nbsp;&nbsp;&nbsp;我们首先来看一个简单的嵌入式SQL语言的程序(C语言):在YANGZH服务器的pubs数据库上查询lastname为“White”的firstname。用sa(口令为password)连接数据库服务器。这个例子程序如下:<BR>例1、查询lastname为“White”的firstname的信息。<BR>main()<BR>{<BR>&nbsp;&nbsp; EXEC SQL BEGIN DECLARE SECTION;<BR>&nbsp;&nbsp; char first_name[50];<BR>&nbsp;&nbsp; char last_name[] = "White";<BR>&nbsp;&nbsp; EXEC SQL END DECLARE SECTION;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; EXEC SQL CONNECT TO YANGZH.pubs<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USER sa.password;<BR>&nbsp;&nbsp; EXEC SQL SELECT au_fname INTO :first_name<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from authors where au_lname = :last_name;<BR>&nbsp;&nbsp; printf("first name: %s\n",first_name);<BR>&nbsp;&nbsp; return (0);<BR>}<BR><BR>&nbsp;&nbsp;从上面这个例子,我们看出嵌入SQL的基本特点是:<BR>1、每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL语句。这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。<BR>2、如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”,在Fortran中必须有续行符。其他语言也有相应规定。<BR>3、每一条嵌入SQL语句都有结束符号,如:在C中是“;”。<BR><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>
回复者:kiki_zl 回复日期:2003-06-11 17:43:02
<br>内容:非常感谢您的帮助!关于ESQL/C的语法,我大概都知道一点了,主要是在具体的应用上还不是太清楚,更不清楚如何用它来调用存储过程了,这方面的资料网上很少,查了好多天了都没查到。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:kf 回复日期:2003-06-11 18:24:28
<br>内容:回kiki_zl:<BR>我刚才问了一个大姐,是VC调用的这个,要不要看?<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>
回复者:kiki_zl 回复日期:2003-06-11 20:24: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>
回复者:kf 回复日期:2003-06-11 20:35:19
<br>内容:可以用 SQLExecDirect(hstmt, (unsigned char*)sqlcommand, SQL_NTS);<BR>其中sqlcommand写为:<BR>wsprinrf(sqlcommand, "{call sp_detach_db('%s')}", "pubs");<BR><BR>我现在用CDataBase类,<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;sqlCommand[1024];<BR>&nbsp;&nbsp;&nbsp;&nbsp;wsprintf(sqlCommand, "{call dbo.sp_detach_db('%s')}", "cmpp");<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_dbSchool.ExecuteSQL( sqlCommand );<BR><BR>执行时报“不能分离,数据库cmpp正在使用”,说明存储过程已执行<BR>但没取回结果代码,因为ExecuteSQL不会返回结果的,<BR><BR><BR>一共这么多,上面全是大姐发过来的,她用VC调试过的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:kiki_zl 回复日期:2003-06-12 10:58:38
<br>内容:不行呀,我的目的就是要分离数据库,当数据库正在被使用时用sp_detach_db是不能卸载数据库的啊。
<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-06-12 11:32:43
<br>内容:sp_detach_db [@dbname =] 'database_name'<BR>[, [@skipchecks =] 'skipchecks']<BR>其中[@skipchecks =] 'skipchecks'子句中Skipchecks 的值为True 或False 当Skipchecks<BR>的值为True 时指定在执行此过程之前不需要对数据库中的所有表执行UPDATE STATISTICS<BR>命令为False 时则需要执行UPDATE STATISTICS 命令<BR><BR>这是语法,,我好像没动它,//哈哈,赖得理它,,<BR><BR>在查询分析器中运行Sp_detach_db 系统存储过程拆分mytest<BR>数据库命令语句如下<BR>exec sp_detach_db mytest, true<BR><BR>这样一运行也说mytest正在使用,无法分离,但我停掉正在使用mytest的数据库的操作(先停sql server),再启动,连接后不要使用mytest数据库,用其它的数据库可以,再试一下,终于成功分离了<BR><BR><BR>//关于在C里调用我是个痴圣,,见笑了 。。
<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-06-12 11:48:43
<br>内容:大哥不会吧,,试验下一得<BR>用exec sp_attach_db @dbname = 'mytest',<BR>@filename1 = 'e:\sql data\mytest_data.mdf',<BR>@filename2 = 'e:\sql data\mytest_log.ldf'<BR><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>
回复者:kiki_zl 回复日期:2003-06-12 11:53:19
<br>内容:没有这么复杂吧!在sql查询分析器中,不要选择要分离的数据库,然后直接使用exec sp_detach_db @dbname='database'即可卸载!我用c++builder写了一个程序,主要是先用sp_detach_db分离数据库,然后用sp_attach_single_file_db将database中的一个文件附加到当前服务器上。请问通过什么方法才能实现这样的功能呢??
<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>回复者:duanruiyu 回复日期:2003-06-12 15:54:52
<br>内容:我不会嵌入式SQL语句,用vc的CDatabas类倒可以实现,代码如下:<BR>(实现前提为建立odbc时不要用要分离的数据库)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CDatabase m_db;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char ds[200];<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;sqlCommand[1024];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;wsprintf(ds, "DSN=%s;UID=%s;PWD=%s;", "cigamanager", "sa", "");<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_db.OpenEx(ds/*, CDatabase::openReadOnly*/);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;wsprintf(sqlCommand, "{call dbo.sp_detach_db('%s')}", "pubs");<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_db.ExecuteSQL( sqlCommand );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;wsprintf(sqlCommand, "{call dbo.sp_attach_single_file_db('%s','%s')}", "pubs","c:\\Program Files\\microsoft sql server\\mssql\\Data\\pubs.mdf");<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_db.ExecuteSQL( sqlCommand );<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>
回复者:kiki_zl 回复日期:2003-06-18 15:23:15
<br>内容:换成C++Builder要怎么写呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:duanruiyu 回复日期:2003-06-19 14:09:37
<br>内容:C++Bulider我不会了。
<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-06-23 11:56:00
<br>内容:感谢大家的帮助,我已经做好了。不过是用C++builder做的。具体方法是:先用TQuery执行“use master”,然后使TQuery的Active=false,执行“sp_detach_db @dbname='xxx'”就不会提示:“数据库正在被使用,不能分离”了。
<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 + -