C#连接数据库等相关语法.docx
《C#连接数据库等相关语法.docx》由会员分享,可在线阅读,更多相关《C#连接数据库等相关语法.docx(25页珍藏版)》请在冰豆网上搜索。
C#连接数据库等相关语法
2006年2月22日#
表名作为参数传递的存储过程写法
SETQUOTED_IDENTIFIERON
GO
SETANSI_NULLSON
GO
--=================================================================
--描述:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
--作者:
鲁湘
--@tableName 该模板对应的数据库表
--@RecordID 业务处理需要寻找表中记录的ID号码
--=================================================================
ALTER PROCEDUREWF_QingJia
(@tableNamevarchar(50),@recordIDvarchar(50))
AS
--获取表中的业务数据值
DECLARE@moneyvarchar(100), --业务逻辑需要的值
@sqlsnvarchar(4000) --保存组合SQL语句
SET@sqls='SELECT@a=MoneyFROM'+@tableName+'WHEREID='+@recordID
EXECUTEsp_executesql@sqls,N'@avarchar(50)output',@moneyoutput
--根据值进行相应的业务处理
print@money
UPDATEWF_FormBillSET[Money]='真的被处理了'WHERE[ID]=@recordID
GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO
posted@2006-11-1616:
49Ben阅读(409)|评论(0)| 编辑 收藏
[转]经典SQL语句--收藏
经典SQL语句--收藏
[个人收藏]经典SQL语句.值得收藏
精典的SQL语句,推荐收藏
在网上经常转,常常看到有些人为了求得某些SQL语句而焦头烂额,现在我特别把自己收藏的一些比较精典的SQL拿出来和大家分享一下
1.行列转换--普通
假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
想变成
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82
declare@sqlvarchar(4000)
set@sql=''selectName''
select@sql=@sql+'',sum(caseSubjectwhen''''''+Subject+''''''thenResultend)[''+Subject+'']''
from(selectdistinctSubjectfromCJ)asa
select@sql=@sql+''fromtestgroupbyname''
exec(@sql)
2.行列转换--合并
有表A,
idpid
1 1
1 2
1 3
2 1
2 2
3 1
如何化成表B:
idpid
11,2,3
21,2
31
创建一个合并的函数
createfunctionfmerg(@idint)
returnsvarchar(8000)
as
begin
declare@strvarchar(8000)
set@str=''''
select@str=@str+'',''+cast(pidasvarchar)from表Awhereid=@idset@str=right(@str,len(@str)-1)
return(@str)
End
go
--调用自定义函数得到结果
selectdistinctid,dbo.fmerg(id)from表A
3.如何取得一个数据表的所有列名
方法如下:
先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOLUMN表中取得该数据表的所有列名。
SQL语句如下:
declare@objidint,@objnamechar(40)
set@objname=''tablename''
select@objid=idfromsysobjectswhereid=object_id(@objname)
select''Column_name''=namefromsyscolumnswhereid=@objidorderbycolid
是不是太简单了?
呵呵不过经常用阿.
4.通过SQL语句来更改用户的密码
修改别人的,需要sysadminrole
EXECsp_passwordNULL,''newpassword'',''User''
如果帐号为SA执行EXECsp_passwordNULL,''newpassword'',sa
5.怎么判断出一个表的哪些字段不允许为空?
selectCOLUMN_NAMEfromINFORMATION_SCHEMA.COLUMNSwhereIS_NULLABLE=''NO''andTABLE_NAME=tablename
6.如何在数据库里找到含有相同字段的表?
a.查已知列名的情况
SELECTb.nameasTableName,a.nameascolumnname
Fromsyscolumns aINNERJOIN sysobjectsb
ONa.id=b.id
ANDb.type=''U''
ANDa.name=''你的字段名字''
b.未知列名查所有在不同表出现过的列名
Selecto.nameAstablename,s1.nameAscolumnname
Fromsyscolumnss1,sysobjectso
Wheres1.id=o.id
Ando.type=''U''
AndExists(
Select1Fromsyscolumnss2
Wheres1.name=s2.name
Ands1.id<>s2.id
)
7.查询第xxx行数据
假设id是主键:
select*
from(selecttopxxx*fromyourtable)aa
wherenotexists(select1from(selecttopxxx-1*fromyourtable)bbwhereaa.id=bb.id)
如果使用游标也是可以的
fetchabsolute[number]from[cursor_name]
行数为绝对行数
8.SQLServer日期计算
a.一个月的第一天
SELECTDATEADD(mm,DATEDIFF(mm,0,getdate()),0)
b.本周的星期一
SELECTDATEADD(wk,DATEDIFF(wk,0,getdate()),0)
c.一年的第一天
SELECTDATEADD(yy,DATEDIFF(yy,0,getdate()),0)
d.季度的第一天
SELECTDATEADD(qq,DATEDIFF(qq,0,getdate()),0)
e.上个月的最后一天
SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))
f.去年的最后一天
SELECTdateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))
g.本月的最后一天
SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))
h.本月的第一个星期一
selectDATEADD(wk,DATEDIFF(wk,0,
dateadd(dd,6-datepart(day,getdate()),getdate())
),0)
i.本年的最后一天
SELECTdateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))。
-----------------------------------------------------------------------
1.按姓氏笔画排序:
Select*FromTableNameOrderByCustomerNameCollateChinese_PRC_Stroke_ci_as
2.数据库加密:
selectencrypt(''原始密码'')
selectpwdencrypt(''原始密码'')
selectpwdcompare(''原始密码'',''加密后密码'')=1--相同;否则不相同encrypt(''原始密码'')
selectpwdencrypt(''原始密码'')
selectpwdcompare(''原始密码'',''加密后密码'')=1--相同;否则不相同
3.取回表中字段:
declare@listvarchar(1000),@sqlnvarchar(1000)
select@list=@list+'',''+b.namefromsysobjectsa,syscolumnsbwherea.id=b.idanda.name=''表A''
set@sql=''select''+right(@list,len(@list)-1)+''from表A''
exec(@sql)
4.查看硬盘分区:
EXECmaster..xp_fixeddrives
5.比较A,B表是否相等:
if(selectchecksum_agg(binary_checksum(*))fromA)
=
(selectchecksum_agg(binary_checksum(*))fromB)
print''相等''
else
print''不相等''
6.杀掉所有的事件探察器进程:
DECLAREhcforeachCURSORGLOBALFORSELECT''kill''+RTRIM(spid)FROMmaster.dbo.sysprocesses
WHEREprogram_nameIN(''SQLprofiler'',N''SQL事件探查器'')
EXECsp_msforeach_worker''?
''
7.记录搜索:
开头到N条记录
SelectTopN*From表
-------------------------------
N到M条记录(要有主索引ID)
SelectTopM-N*From表WhereIDin(SelectTopMIDFrom表)OrderbyIDDesc
----------------------------------
N到结尾记录
SelectTopN*From表OrderbyIDDesc
8.如何修改数据库的名称:
sp_renamedb''old_name'',''new_name''
9:
获取当前数据库中的所有用户表
selectNamefromsysobjectswherextype=''u''andstatus>=0
10:
获取某一个表的所有字段
selectnamefromsyscolumnswhereid=object_id(''表名'')
11:
查看与某一个表相关的视图、存储过程、函数
selecta.*fromsysobjectsa,syscommentsbwherea.id=b.idandb.textlike''%表名%''
12:
查看当前数据库中所有存储过程
selectnameas存储过程名称fromsysobjectswherextype=''P''
13:
查询用户创建的所有数据库
select*frommaster..sysdatabasesDwheresidnotin(selectsidfrommaster..sysloginswherename=''sa'')
或者
selectdbid,nameASDB_NAMEfrommaster..sysdatabaseswheresid<>0x01
14:
查询某一个表的字段和数据类型
selectcolumn_name,data_typefrominformation_schema.columns
wheretable_name=''表名''
[n].[标题]:
Select*FromTableNameOrderByCustomerName
[n].[标题]:
Select*FromTableNameOrderByCustomerName
posted@2006-04-0615:
01Ben阅读(578)|评论(0)| 编辑 收藏
vs2003和vs2005下的发送SMTP邮件(downmoon原创)选择自downmoon的Blog
vs2003和vs2005下的发送SMTP邮件(downmoon原创)
一、vs2003
引用System.Web.Mail命名空间
privatevoidSenMail2003()
{
MailMessagemailObj=newMailMessage();
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(newMailAttachment("c:
\\swf\\000.bmp"));
SmtpMail.Send(mailObj);
Response.Write("发送邮件成功!
");
}
二、vs2005
引用System.Net.Mail命名空间,安全性得到了增强
publicstaticvoidSendWebMailAndAttach(stringserver)
{
stringfile="e:
\\inetpub\\wwwroot\\Test2005All\\TestXML\\testXML.xml";
System.Net.Mail.MailMessagemessage=newSystem.Net.Mail.MailMessage("Test@","Test@","textmessageforyou.","TestTitle");
System.Net.Mail.Attachmentdata=newSystem.Net.Mail.Attachment(file,System.Net.Mime.MediaTypeNames.Application.Octet);
System.Net.Mime.ContentDispositiondisposition=data.ContentDisposition;
disposition.CreationDate=System.IO.File.GetCreationTime(file);
disposition.ModificationDate=System.IO.File.GetLastWriteTime(file);
disposition.ReadDate=System.IO.File.GetLastAccessTime(file);
message.Attachments.Add(data);
System.Net.Mail.SmtpClientclient=newSystem.Net.Mail.SmtpClient(server);
client.Credentials=newNetworkCredential("用户名","密码");
client.Send(message);
data.Dispose();
}
引用示例
SendWebMailAndAttach("");
posted@2006-04-0614:
18Ben阅读(261)|评论(0)| 编辑 收藏
SQL中CONVERT转化函数,Concat,COALESCE的用法
SQL中CONVERT转化函数的用法
CONVERT的使用方法:
////////////////////////////////////////////////////////////////////////////////////////
格式:
CONVERT(data_type,expression[,style])
说明:
此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.
例子:
SELECTCONVERT(varchar(30),getdate(),101)now
结果为
now
---------------------------------------
09/15/2001
/////////////////////////////////////////////////////////////////////////////////////
style数字在转换时间时的含义如下
-------------------------------------------------------------------------------------------------
Style(2位表示年份)|Style(4位表示年份)|输入输出格式
-------------------------------------------------------------------------------------------------
-|0or100|monddyyyyhh:
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|ddmonyy
-------------------------------------------------------------------------------------------------
7|107|mondd,yy
-------------------------------------------------------------------------------------------------
8|108|hh:
mm:
ss
---------------------------------------------------------------------------------------------