博文

获取数据库所有存储过程名称,内容以及参数的语句(2007-10-25 11:55:00)

摘要:SELECT (CASE WHEN b.colorder = 1 OR
      b.colorder IS NULL THEN a.name ELSE '' END) AS N'表名', b.name AS N'字段名',
      C.NAME AS N'数据类型', b.prec AS N'长度',
      (CASE WHEN b.colstat = 4 THEN '√' ELSE '' END) N'是否输出',
      b.colorder N'字段序号', (CASE WHEN b.colorder = 1 OR
      b.colorder IS NULL THEN d .text ELSE '' END) AS N'内容'
FROM sysobjects a LEFT JOIN
      syscolumns b ON b.id = a.id LEFT JOIN
      systypes C ON (C.xtype = B.xtype AND c.name <> 'sysname') LEFT JOIN
      syscomments d ON d .id = a.id
WHERE a.schema_ver = 0 AND a.xtype = 'p'
ORDER BY a.name, b.colorder......

阅读全文(3425) | 评论:0

尚未解决:服务器端异步方式的异常-不执行回调(2007-10-22 20:52:00)

摘要:单位上一个用于通讯的服务器上的程序出了问题: 服务器程序使用UDP服务端,用的是异步Socket模式,服务器刚搭建好的时候没什么问题,最近由于通讯客户端增多(da大概1500个左右)后,出现这样的问题: mySocket.Bind(ipe);
    mySocket.BeginReceiveFrom(obj.buffer,0,UdpTranslateObj.BUFFER_SIZE,SocketFlags.None,
     ref obj.endPoint,new AsyncCallback(ReceiveCallBack),obj); private void ReceiveCallBack(IAsyncResult ar)
  {
   UdpTranslateObj obj = (UdpTranslateObj)ar.AsyncState;
   try
   {
    int k = obj.udpSock.EndReceiveFrom(ar,ref obj.endPoint);
    if(k > 0)
    {
     ReceiveEventArgs e = new ReceiveEventArgs();
     e._ReceiveBytes = new byte[k];
     Array.Copy(obj.buffer,0,e._ReceiveBytes,0,k);
     e._RemoteEndPoint = obj.endPoint;
     OnReceive(e)......

阅读全文(3273) | 评论:0

用ODBC导出数据到Excel中(2007-10-19 09:44:00)

摘要:数据导出到Excel不一定要用Office的COM,利用ODBC也可以做到!   定义一个连接Excel文件的连接字符串: String excelSql = @"Driver={Microsoft Excel Driver (*.xls)};READONLY=FALSE;DriverId=790;Dbq={0};DefaultDir=c:\;" ; 其中的{0}要实际替换为目标文件的路径和全名. this.saveFileDialog1.Filter = "Excel文件.xls | *.xls"; string saveFileName  = "";
   DialogResult dr = this.saveFileDialog1.ShowDialog();
   if(dr != DialogResult.Cancel)
   {
    saveFileName = saveFileDialog1.FileName;
    if(File.Exists(saveFileName))
    {
     File.Delete(saveFileName);//删除目标文件
    }
      File.Copy("Book1.xls",saveFileName,true);//复制母板文件为目标文件 } else {  return;//保存文件对话框中选择了'取消' }
 String conSql =excelSql.Replace("{0}",saveFileName);//替换连接字符串中的占位符
 OdbcConnection cnn = new OdbcConnection(conSql); try{ cnn.Open();//打开连接 } ......

阅读全文(4316) | 评论:0

如何获取SQL表字段的注释文本(2007-05-29 22:08:00)

摘要:SQL2000: SELECT B.name as 字段名,A.[value] as 注释
FROM sysproperties A INNER JOIN
      syscolumns B ON b.colid = A.smallid AND A.id = B.id
WHERE (B.id = OBJECT_ID('表名称')) SQL2005: select * from fn_listextendedproperty('MS_Description',   'user',   'dbo',   'table',   '表名称'',   'column',   default)
注:次方法只能取出有注释的字段,如果指定表没有注释,则此方法不能获取到任何记录......

阅读全文(3847) | 评论:0

C#通讯编程步步高(一)(2007-05-29 21:35:00)

摘要:  2. UDP UDP协议是一种无连接的,不可靠的通讯模式,所谓不可靠,即它不保证数据能准确的发送到对方,因此使用它的时候必须考虑数据包丢失的情况. 使用UDP的场合一般是对数据包能否到达对方没有严格要求,只在乎数据能快速的到达对方.据我使用UDP协议编程的经验,UDP传输对服务器的压力最低,也就是服务器的开销最少,这对于需要处理海量连接的服务器而言,优势不言而喻. 由于UDP协议的无连接传输,也就是UDP协议在发送数据包之前不需要和对方建立连接,所以在使用UDP协议传输数据时要考虑数据确认的问题,因为发送方并不清楚目的计算机是否接收到了数据,或是数据包在传输过程中被丢弃. UDP协议的通讯过程十分简单:发送方直接将数据发送到目标计算机的地址和端口即可.在C#中,UDP Socket在发送数据之前需要绑定一个本地端口或者用Connect方法连接目标计算机端口(事实上,这个方法并没有进行连接,它只是决定之后用这个Socket发送时是否需要提供远程主机的地址端口). 二.C#中的与Socket通讯相关的命名空间和类 1.System.Net命名空间: 这个命名空间提供了通讯协议的接口. .Net Framwork SDK文档对这个命名空间的描述:System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口。WebRequest 和 WebResponse 类形成了所谓的可插接式协议的基础。可插接式协议是网络服务的一种实现,它使您能够开发出使用 Internet 资源的应用程序,而不必考虑各种不同协议的具体细节。 2.System.Net.Sockets命名空间: 这个命名空间提供了构造Socket需要的类. .Net Framwork SDK文档对这个命名空间的描述: System.Net.Sockets 命名空间为需要严密控制网络访问的开发人员提供了 Windows Sockets (Winsock) 接口的托管实现。 TCPClient、TCPListener 和 UDPClient 类封装有关创建到 Internet 的 TCP 和 UDP 连接的详细信息。 3.Socket编程常用的类: (1) IPAddress类: IPAddress类实现对IP地址的对象化封装. 常用方法和常量: a.Pars......

阅读全文(4109) | 评论:4

C#通讯编程步步高(序)(2007-05-27 22:46:00)

摘要:在C#中,通讯编程是十分容易的一件事情.以前在C++中很长的代码能完成的事情,在C#中几句代码就能解决,这得益于.net框架提供的高度封装的类库.学习C#3年了,觉得应该把自己的心得写出来,供别人也供自己以后学习. 注:以下内容纯粹属于随笔,没有目录.可能内容中有些错误,欢迎指正. 另:这里所说的通讯编程指Windows系统下的通讯编程. 一.网络通讯 网络通讯最主要的方法就是Socket通讯,所以我也只学习了Socket TCP/UDP通讯,至于什么命名管道啊什么的通讯我没有去学习,不是不值得学,而是因为自己精力有限,把所有的精力都放到了Socket TCP/UDP通讯上. 二.通讯协议 1.TCP TCP通讯协议是基于IP协议之上的一种面向可靠连接的通讯协议,在它之上有类似很多的比如http,ftp等协议都是我们熟悉的.它的优点是传输可靠,能够保证数据完整的正确的发送到接收方,在对数据正确性和完整性比较高的场合,TCP通讯是我的选择. TCP协议的通讯过程:首先,必须先建立和接收方的通讯链接(Connect),接收方响应链接(Accept);然后才是发送数据(Send),接收方接收数据(Receive);最后双方拆除链接(Disconnect). 上面的通讯过程是我们具体使用TCP协议进行编程时的操作,实际上对于底层通讯,在链接建立和数据通讯的过程中,通讯双方的Socket实际要做很多事情,当然,这些不是我们关心的,我们也无须控制它,除非我们熟知通讯双方的网络状况,我们才可以调整Socket在通讯过程中的一些配置参数(SetSocketOptions),参数非常之多,我也没具体了解过,不过可以参考<TCP/IP协议详解>和<Windows网络编程>等书. 使用TCP/IP协议编程务必了解NG算法.NG算法是一种排队算法,通俗的讲,因为TCP/IP的传输效率问题(TCP协议的数据头比UDP协议的数据头要大),它采用一种算法,使网络上一次数据交互能够最大可能的传输数据,也就是在一定时间内,调用Send方法发送数据的时候,TCP并非立即发送,而是等待缓冲区到一定水位后再进行发送,除非等待的时间到达,否则TCP会一直等待缓冲区内有更多的数据. NG算法能解决TCP/IP通讯效率的问题,但是也给我们编程带来了一定的难度,其中最......

阅读全文(4546) | 评论:0

浅析:setsockopt()改善socket网络程序的健壮性[转](2007-04-24 16:50:00)

摘要:1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程 )后想继续重用该socket:
BOOL bReuseaddr=TRUE;
setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));
2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:
BOOL bDontLinger = FALSE;
setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLinger,sizeof(BOOL));
3.在send(),recv()过程中有时由于网络状况等原因,发收不能预期进行,而设置收发时限:
int nNetTimeout=1000;//1秒
//发送时限
setsockopt(socket,SOL_S0CKET,SO_SNDTIMEO,(char *)&nNetTimeout,sizeof(int));
//接收时限
setsockopt(socket,SOL_S0CKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));
4.在send()的时候,返回的是实际发送出去的字节(同步)或发送到socket缓冲区的字节(异步);系统默认的状态发送和接收一次为8688字节(约为8.5K);在实际的过程中发送数据和接收数据量比较大,可以设置socket缓冲区,而避免了send(),recv()不断的循环收发:
// 接收缓冲区
int nRecvBuf=32*1024;//设置为32K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
//发送缓冲区
int nSendBuf=32*1024;//设置为32K
setsockopt(s,SOL_SOCKET,S......

阅读全文(3558) | 评论:0

怎样用Shell调用sql执行sql脚本文件(2007-04-13 11:26:00)

摘要:string sqlQuery = "osql.exe /uSQLLogUser /pPasswrod /sServerName /dDataBaseName /i yoursql.sql";
......

阅读全文(4677) | 评论:0

安装SQL2000报“挂起的文件操作” (2007-04-04 22:47:00)

摘要: 如果在安装SQL Server之前装过其他软件,常常报:
“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机。”
即使重启N次也不行,解决方法:
开始》运行》regedt32
找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager,HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager,
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager这三个项中的PendingFileRenameOperations值,删除即可。 ......

阅读全文(3826) | 评论:0

关于“automation服务器不能创建对象”的问题的解决方案大全(2007-03-12 09:19:00)

摘要:automation服务器不能创建对象”的问题的解决方案大全   文章引用至: http://e.simwe.com/html/v/b/c/viewspace_2916.html

本人工作中的应用系统都是jsp的,大量javascript程序,一旦出“automation服务器不能创建对象”问题,大量报表及查询无法保存,苦思冥

想、千尝万试,终于将其搞定,现将相关方案与大家共享。
1、如果是Scripting.FileSystemObject (FSO 文本文件读写)被关闭了,开启FSO功能即可,在“运行”中执行regsvr32 scrrun.dll即可

2、安全模式设置成“中”,如果javascript脚本中报这个错误,还应将IE的安全设置“不允许运行未标记为安全的activeX控件”启用即可。

注意如果您将相应的网站设成“受信任的站点”,必须对“受信任的站点”进行相应的IE安全设置,此时如果对“Internet”IE设置将是徒劳

的。

3、有些脚本需要微软的 MSXML 控件才能进入。当使用 IE 5 以上版本的缺省安全模式时,会提示是否接受 MSXML 控件,如果接受,MSXML 将

自动安装到您的机器上(得等上几分钟)。如果自动安装不成功,可以自行下载和安装 MSXML 3.0 SP7。有时是由于msxml 3服务被关掉了,使用

regsvr32 msxml3.dll即可

4、用上面方法基本上能决问题。如果是在安装某个软件后出现这种问题,可尝度卸载该软件或重装一下!
如果还是不行,试试以下方法: 5、请将以下语句复制到记事本中,另存为后缀为.cmd的文件,并运行。当然在命令行下一句句运行也没问题。

echo 正在修复,这个过程可能需要几分钟,请稍候……
rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%/System32/dacui.dll
rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%/Catroot/icatalog.mdb ......

阅读全文(24139) | 评论:0