1、C#连接数据库等相关语法2006年2月22日 # 表名作为参数传递的存储过程写法SET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GO-=- 描述:- 作者:鲁湘- tableName 该模板对应的数据库表- RecordID 业务处理需要寻找表中记录的ID号码-=ALTER PROCEDURE WF_QingJia (tableName varchar(50),recordID varchar(50)AS- 获取表中的业务数据值DECLARE money varchar(100), - 业务逻辑需要的值sqls nvarchar(4000) - 保存组
2、合SQL语句SET sqls=SELECT a=Money FROM +tableName + WHERE ID =+recordIDEXECUTE sp_executesql sqls,Na varchar(50) output,money output- 根据值进行相应的业务处理print moneyUPDATE WF_FormBill SET Money=真的被处理了 WHERE ID=recordIDGOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GOposted 2006-11-16 16:49 Ben 阅读(409) | 评论 (0)
3、 |编辑收藏 转经典SQL语句-收藏 经典SQL语句-收藏 个人收藏经典SQL语句.值得收藏精典的SQL语句,推荐收藏在网上经常转,常常看到有些人为了求得某些SQL语句而焦头烂额,现在我特别把自己收藏的一些比较精典的SQL拿出来和大家分享一下1. 行列转换-普通假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82想变成 姓名 语文 数学 物理张三 80 90 85李四 85 92 82declare sql varchar(4000)set sql = select Namesele
4、ct sql = sql + ,sum(case Subject when +Subject+ then Result end) +Subject+from (select distinct Subject from CJ) as aselect sql = sql+ from test group by nameexec(sql)2. 行列转换-合并有表A,id pid1 11 21 32 12 23 1如何化成表B:id pid1 1,2,32 1,23 1创建一个合并的函数create function fmerg(id int)returns varchar(8000)asbegind
5、eclare str varchar(8000)set str=select str=str+,+cast(pid as varchar) from 表A where id=id set str=right(str,len(str)-1)return(str)Endgo-调用自定义函数得到结果select distinct id,dbo.fmerg(id) from 表A3. 如何取得一个数据表的所有列名方法如下:先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOLUMN表中取得该数据表的所有列名。SQL语句如下:declare objid int,objnam
6、e char(40)set objname = tablenameselect objid = id from sysobjects where id = object_id(objname)select Column_name = name from syscolumns where id = objid order by colid是不是太简单了? 呵呵 不过经常用阿.4. 通过SQL语句来更改用户的密码修改别人的,需要sysadmin role EXEC sp_password NULL, newpassword, User如果帐号为SA执行EXEC sp_password NULL,
7、newpassword, sa 5. 怎么判断出一个表的哪些字段不允许为空?select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE=NO and TABLE_NAME=tablename 6. 如何在数据库里找到含有相同字段的表?a. 查已知列名的情况SELECT b.name as TableName,a.name as columnname From syscolumns a INNER JOIN sysobjects b ON a.id=b.id AND b.type=U AND a.name=你的字段名字
8、 b. 未知列名查所有在不同表出现过的列名Select o.name As tablename,s1.name As columnname From syscolumns s1, sysobjects o Where s1.id = o.id And o.type = U And Exists ( Select 1 From syscolumns s2 Where s1.name = s2.name And s1.id s2.id )7. 查询第xxx行数据假设id是主键: select * from (select top xxx * from yourtable) aa where not
9、 exists(select 1 from (select top xxx-1 * from yourtable) bb where aa.id=bb.id)如果使用游标也是可以的 fetch absolute number from cursor_name 行数为绝对行数8. SQL Server日期计算a. 一个月的第一天SELECT DATEADD(mm, DATEDIFF(mm,0,getdate(), 0) b. 本周的星期一SELECT DATEADD(wk, DATEDIFF(wk,0,getdate(), 0) c. 一年的第一天SELECT DATEADD(yy, DATED
10、IFF(yy,0,getdate(), 0) d. 季度的第一天SELECT DATEADD(qq, DATEDIFF(qq,0,getdate(), 0) e. 上个月的最后一天 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate(), 0) f. 去年的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate(), 0) g. 本月的最后一天SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate()+1, 0) h. 本月
11、的第一个星期一select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate(),getdate() ), 0) i. 本年的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()+1, 0)。-1.按姓氏笔画排序:Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密:select encrypt(原始密码)select pwdencryp
12、t(原始密码)select pwdcompare(原始密码,加密后密码) = 1-相同;否则不相同 encrypt(原始密码)select pwdencrypt(原始密码)select pwdcompare(原始密码,加密后密码) = 1-相同;否则不相同3.取回表中字段:declare list varchar(1000),sql nvarchar(1000) select list=list+,+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name=表Aset sql=select +right(list,len(
13、list)-1)+ from 表A exec (sql)4.查看硬盘分区:EXEC master.xp_fixeddrives5.比较A,B表是否相等:if (select checksum_agg(binary_checksum(*) from A) = (select checksum_agg(binary_checksum(*) from B)print 相等elseprint 不相等6.杀掉所有的事件探察器进程:DECLARE hcforeach CURSOR GLOBAL FOR SELECT kill +RTRIM(spid) FROM master.dbo.sysprocesse
14、sWHERE program_name IN(SQL profiler,NSQL 事件探查器)EXEC sp_msforeach_worker ?7.记录搜索:开头到N条记录Select Top N * From 表-N到M条记录(要有主索引ID)Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc-N到结尾记录Select Top N * From 表 Order by ID Desc8.如何修改数据库的名称:sp_renamedb old_name, new_name 9:获取当前数据库中
15、的所有用户表select Name from sysobjects where xtype=u and status=010:获取某一个表的所有字段select name from syscolumns where id=object_id(表名)11:查看与某一个表相关的视图、存储过程、函数select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like %表名%12:查看当前数据库中所有存储过程select name as 存储过程名称 from sysobjects where xtype=P13:
16、查询用户创建的所有数据库select * from master.sysdatabases D where sid not in(select sid from master.syslogins where name=sa)或者select dbid, name AS DB_NAME from master.sysdatabases where sid 0x0114:查询某一个表的字段和数据类型select column_name,data_type from information_schema.columnswhere table_name = 表名 n.标题:Select * From
17、TableName Order By CustomerName n.标题:Select * From TableName Order By CustomerName posted 2006-04-06 15:01 Ben 阅读(578) | 评论 (0) |编辑收藏 vs2003 和vs2005下的发送SMTP邮件 (downmoon原创) 选择自 downmoon 的 Blog vs2003 和vs2005下的发送SMTP邮件 (downmoon原创)一、vs2003引用 System.Web.Mail命名空间private void SenMail2003() MailMessage ma
18、ilObj = new MailMessage(); mailObj.To = this.txtTo.Text; mailObj.From = this.txtFrom.Text; mailObj.Subject = 精采笑话; mailObj.Body = 猪!你已中毒! 哈哈 ; mailObj.BodyFormat = MailFormat.Html; mailObj.BodyEncoding = MailFormat.Base64; mailObj.Priority = MailPriority.High; mailObj.Attachments.Add(new MailAttachm
19、ent(c:swf000.bmp); SmtpMail.Send(mailObj); Response.Write(发送邮件成功!); 二、vs2005引用 System.Net.Mail命名空间,安全性得到了增强public static void SendWebMailAndAttach(string server) string file = e:inetpubwwwrootTest2005AllTestXMLtestXML.xml; System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(Test, T
20、est, text message for you., Test Title); System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(file, System.Net.Mime.MediaTypeNames.Application.Octet); System.Net.Mime.ContentDisposition disposition = data.ContentDisposition; disposition.CreationDate = System.IO.File.GetCreationTime(file)
21、; disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); disposition.ReadDate = System.IO.File.GetLastAccessTime(file); message.Attachments.Add(data); System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(server); client.Credentials = new NetworkCredential(用户名, 密码); clien
22、t.Send(message); data.Dispose(); 引用示例SendWebMailAndAttach(); posted 2006-04-06 14:18 Ben 阅读(261) | 评论 (0) |编辑收藏 SQL中CONVERT转化函数, Concat , COALESCE的用法SQL中CONVERT转化函数的用法CONVERT的使用方法:/格式:CONVERT(data_type,expression,style)说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用
23、到.例子:SELECT CONVERT(varchar(30),getdate(),101) now结果为now-09/15/2001/style数字在转换时间时的含义如下-Style(2位表示年份) | Style(4位表示年份) | 输入输出格式 - | 0 or 100 | mon dd yyyy hh:miAM(或PM) -1 | 101 | mm/dd/yy -2 | 102 | yy-mm-dd -3 | 103 | dd/mm/yy -4 | 104 | dd-mm-yy -5 | 105 | dd-mm-yy -6 | 106 | dd mon yy -7 | 107 | mon dd,yy -8 | 108 | hh:mm:ss -
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1