barriers / 阅读 / 详情

怎么修改sql连接

2023-07-16 12:16:36
TAG: sq sql
共4条回复
可可

一.SELECT语句的完整语法为:

SELECT[ALL|DISTINCT|DISTINCTROW|TOP]

{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}

FROM tableexpression[,…][IN externaldatabase]

[WHERE…]

[GROUP BY…]

[HAVING…]

[ORDER BY…]

[WITH OWNERACCESS OPTION]

说明:

用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。

1 FROM子句

FROM子句指定了SELECT语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。

例:下列SQL语句返回所有有定单的客户:

SELECT OrderID,Customer.customerID

FROM Orders Customers

WHERE Orders.CustomerID=Customers.CustomeersID

2 ALL、DISTINCT、DISTINCTROW、TOP谓词

(1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。

例:SELECT ALL FirstName,LastName

FROM Employees

(2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。

(3) DISTINCTROW 如果有重复的记录,只返回一个

(4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比)

例:返回5%定货额最大的定单

SELECT TOP 5 PERCENT*

FROM [ Order Details]

ORDER BY UnitPrice*Quantity*(1-Discount) DESC

3 用 AS 子句为字段取别名

如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。

例:返回FirstName字段取别名为NickName

SELECT FirstName AS NickName ,LastName ,City

FROM Employees

例:返回新的一列显示库存价值

SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStock

FROM Products

二 .WHERE 子句指定查询条件

1 比较运算符

比较运算符 含义

= 等于

> 大于

< 小于

>= 大于等于

<= 小于等于

<> 不等于

!> 不大于

!< 不小于

例:返回96年1月的定单

SELECT OrderID, CustomerID, OrderDate

FROM Orders

WHERE OrderDate>#1/1/96# AND OrderDate<#1/30/96#

注意:

Mcirosoft JET SQL 中,日期用‘#"定界。日期也可以用Datevalue()函数来代替。在比较字符型的数据时,要加上单引号"",尾空格在比较中被忽略。

例:

WHERE OrderDate>#96-1-1#

也可以表示为:

WHERE OrderDate>Datevalue(‘1/1/96")

使用 NOT 表达式求反。

例:查看96年1月1日以后的定单

WHERE Not OrderDate<=#1/1/96#

2 范围(BETWEEN 和 NOT BETWEEN)

BETWEEN …AND…运算符指定了要搜索的一个闭区间。

例:返回96年1月到96年2月的定单。

WHERE OrderDate Between #1/1/96# And #2/1/96#

3 列表(IN ,NOT IN)

IN 运算符用来匹配列表中的任何一个值。IN子句可以代替用OR子句连接的一连串的条件。

例:要找出住在 London、Paris或Berlin的所有客户

SELECT CustomerID, CompanyName, ContactName, City

FROM Customers

WHERE City In(‘London"," Paris"," Berlin")

4 模式匹配(LIKE)

LIKE运算符检验一个包含字符串数据的字段值是否匹配一指定模式。

LIKE运算符里使用的通配符

通配符 含义

? 任何一个单一的字符

* 任意长度的字符

# 0~9之间的单一数字

[字符列表] 在字符列表里的任一值

[!字符列表] 不在字符列表里的任一值

- 指定字符范围,两边的值分别为其上下限

例:返回邮政编码在(171)555-0000到(171)555-9999之间的客户

SELECT CustomerID ,CompanyName,City,Phone

FROM Customers

WHERE Phone Like ‘(171)555-####"

LIKE运算符的一些样式及含义

样式 含义 不符合

LIKE ‘A*" A后跟任意长度的字符 Bc,c255

LIKE"5[*]" 5*5 555

LIKE"5?5" 5与5之间有任意一个字符 55,5wer5

LIKE"5##5" 5235,5005 5kd5,5346

LIKE"[a-z]" a-z间的任意一个字符 5,%

LIKE"[!0-9]" 非0-9间的任意一个字符 0,1

LIKE"[[]" 1,*

三 .用ORDER BY子句排序结果

ORDER子句按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),缺省是升序。ORDER子句通常放在SQL语句的最后。

ORDER子句中定义了多个字段,则按照字段的先后顺序排序。

例:

SELECT ProductName,UnitPrice, UnitInStock

FROM Products

ORDER BY UnitInStock DESC , UnitPrice DESC, ProductName

ORDER BY 子句中可以用字段在选择列表中的位置号代替字段名,可以混合字段名和位置号。

例:下面的语句产生与上列相同的效果。

SELECT ProductName,UnitPrice, UnitInStock

FROM Products

ORDER BY 1 DESC , 2 DESC,3

四 .运用连接关系实现多表查询

例:找出同一个城市中供应商和客户的名字

SELECT Customers.CompanyName, Suppliers.ComPany.Name

FROM Customers, Suppliers

WHERE Customers.City=Suppliers.City

例:找出产品库存量大于同一种产品的定单的数量的产品和定单

SELECT ProductName,OrderID, UnitInStock, Quantity

FROM Products, [Order Deails]

WHERE Product.productID=[Order Details].ProductID

AND UnitsInStock>Quantity

另一种方法是用 Microsof JET SQL 独有的 JNNER JOIN

语法:

FROM table1 INNER JOIN table2

ON table1.field1 comparision table2.field2

其中comparision 就是前面WHERE子句用到的比较运算符。

SELECT FirstName,lastName,OrderID,CustomerID,OrderDate

FROM Employees

INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID

注意:

INNER JOIN不能连接Memo OLE Object Single Double 数据类型字段。

在一个JOIN语句中连接多个ON子句

语法:

SELECT fields

FROM table1 INNER JOIN table2

ON table1.field1 compopr table2.field1 AND

ON table1.field2 compopr table2.field2 OR

ON table1.field3 compopr table2.field3

也可以

SELECT fields

FROM table1 INNER JOIN

(table2 INNER JOIN [( ]table3

[INNER JOER] [( ]tablex[INNER JOIN]

ON table1.field1 compopr table2.field1

ON table1.field2 compopr table2.field2

ON table1.field3 compopr table2.field3

外部连接返回更多记录,在结果中保留不匹配的记录,不管存不存在满足条件的记录都要返回另一侧的所有记录。

FROM table [LEFT|RIGHT]JOIN table2

ON table1.field1comparision table.field2

用左连接来建立外部连接,在表达式的左边的表会显示其所有的数据

例:不管有没有定货量,返回所有商品

SELECT ProductName ,OrderID

FROM Products

LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID

右连接与左连接的差别在于:不管左侧表里有没有匹配的记录,它都从左侧表中返回所有记录。

例:如果想了解客户的信息,并统计各个地区的客户分布,这时可以用一个右连接,即使某个地区没有客户,也要返回客户信息。

空值不会相互匹配,可以通过外连接才能测试被连接的某个表的字段是否有空值。

SELECT *

FROM talbe1

LEFT JOIN table2 ON table1.a=table2.c

1 连接查询中使用Iif函数实现以0值显示空值

Iif表达式: Iif(IsNull(Amount,0,Amout)

例:无论定货大于或小于¥50,都要返回一个标志。

Iif([Amount]>50,?Big order?,?Small order?)

五. 分组和总结查询结果

在SQL的语法里,GROUP BY和HAVING子句用来对数据进行汇总。GROUP BY子句指明了按照哪几个字段来分组,而将记录分组后,用HAVING子句过滤这些记录。

GROUP BY 子句的语法

SELECT fidldlist

FROM table

WHERE criteria

[GROUP BY groupfieldlist [HAVING groupcriteria]]

注:Microsoft Jet数据库 Jet 不能对备注或OLE对象字段分组。

GROUP BY字段中的Null值以备分组但是不能被省略。

在任何SQL合计函数中不计算Null值。

GROUP BY子句后最多可以带有十个字段,排序优先级按从左到右的顺序排列。

例:在‘WA"地区的雇员表中按头衔分组后,找出具有同等头衔的雇员数目大于1人的所有头衔。

SELECT Title ,Count(Title) as Total

FROM Employees

WHERE Region = ‘WA"

GROUP BY Title

HAVING Count(Title)>1

JET SQL 中的聚积函数

聚集函数 意义

SUM ( ) 求和

AVG ( ) 平均值

COUNT ( ) 表达式中记录的数目

COUNT (* ) 计算记录的数目

MAX 最大值

MIN 最小值

VAR 方差

STDEV 标准误差

FIRST 第一个值

LAST 最后一个值

六. 用Parameters声明创建参数查询

Parameters声明的语法:

PARAMETERS name datatype[,name datatype[, …]]

其中name 是参数的标志符,可以通过标志符引用参数.

Datatype说明参数的数据类型.

使用时要把PARAMETERS 声明置于任何其他语句之前.

例:

PARAMETERS[Low price] Currency,[Beginning date]datatime

SELECT OrderID ,OrderAmount

FROM Orders

WHERE OrderAMount>[low price]

AND OrderDate>=[Beginning date]

七. 功能查询

所谓功能查询,实际上是一种操作查询,它可以对数据库进行快速高效的操作.它以选择查询为目的,挑选出符合条件的数据,再对数据进行批处理.功能查询包括更新查询,删除查询,添加查询,和生成表查询.

1 更新查询

UPDATE子句可以同时更改一个或多个表中的数据.它也可以同时更改多个字段的值.

更新查询语法:

UPDATE 表名

SET 新值

WHERE 准则

例:英国客户的定货量增加5%,货运量增加3%

UPDATE OEDERS

SET OrderAmount = OrderAmount *1.1

Freight = Freight*1.03

WHERE ShipCountry = ‘UK"

2 删除查询

DELETE子句可以使用户删除大量的过时的或冗于的数据.

注:删除查询的对象是整个记录.

DELETE子句的语法:

DELETE [表名.*]

FROM 来源表

WHERE 准则

例: 要删除所有94年前的定单

DELETE *

FROM Orders

WHERE OrderData<#94-1-1#

3 追加查询

INSERT子句可以将一个或一组记录追加到一个或多个表的尾部.

INTO 子句指定接受新记录的表

valueS 关键字指定新记录所包含的数据值.

INSERT 子句的语法:

INSETR INTO 目的表或查询(字段1,字段2,…)

valueS(数值1,数值2,…)

例:增加一个客户

INSERT INTO Employees(FirstName,LastName,title)

valueS(‘Harry","Washington","Trainee")

4 生成表查询

可以一次性地把所有满足条件的记录拷贝到一张新表中.通常制作记录的备份或副本或作为报表的基础.

SELECT INTO子句用来创建生成表查询语法:

SELECT 字段1,字段2,…

INTO 新表[IN 外部数据库]

FROM 来源数据库

WHERE 准则

例:为定单制作一个存档备份

SELECT *

INTO OrdersArchive

FROM Orders

八. 联合查询

UNION运算可以把多个查询的结果合并到一个结果集里显示.

UNION运算的一般语法:

[表]查询1 UNION [ALL]查询2 UNION …

例:返回巴西所有供给商和客户的名字和城市

SELECT CompanyName,City

FROM Suppliers

WHERE Country = ‘Brazil"

UNION

SELECT CompanyName,City

FROM Customers

WHERE Country = ‘Brazil"

注:

缺省的情况下,UNION子句不返回重复的记录.如果想显示所有记录,可以加ALL选项

UNION运算要求查询具有相同数目的字段.但是,字段数据类型不必相同.

每一个查询参数中可以使用GROUP BY 子句 或 HAVING 子句进行分组.要想以指定的顺序来显示返回的数据,可以在最后一个查询的尾部使用OREER BY子句.

九. 交叉查询

交叉查询可以对数据进行总和,平均,计数或其他总和计算法的计算,这些数据通过两种信息进行分组:一个显示在表的左部,另一个显示在表的顶部.

Microsoft Jet SQL 用TRANSFROM语句创建交叉表查询语法:

TRANSFORM aggfunction

SELECT 语句

GROUP BY 子句

PIVOT pivotfield[IN(value1 [,value2[,…]]) ]

Aggfounction指SQL聚积函数,

SELECT语句选择作为标题的的字段,

GROUP BY 分组

说明:

Pivotfield 在查询结果集中创建列标题时用的字段或表达式,用可选的IN子句限制它的取值.

value代表创建列标题的固定值.

例:显示在1996年里每一季度每一位员工所接的定单的数目:

TRANSFORM Count(OrderID)

SELECT FirstName&""&LastName AS FullName

FROM Employees INNER JOIN Orders

ON Employees.EmployeeID = Orders.EmployeeID

WHERE DatePart(“yyyy”,OrderDate)= ‘1996"

GROUP BY FirstName&""&LastName

ORDER BY FirstName&""&LastName

POVOT DatePart(“q”,OrderDate)&"季度"

十 .子查询

子查询可以理解为 套查询.子查询是一个SELECT语句.

1 表达式的值与子查询返回的单一值做比较

语法:

表达式 comparision [ANY|ALL|SOME](子查询)

说明:

ANY和SOME谓词是同义词,与比较运算符(=,<,>,<>,<=,>=)一起使用.返回一个布尔值True或False.ANY的意思是,表达式与子查询返回的一系列的值逐一比较,只要其中的一次比较产生True结果,ANY测试的返回 True值(既WHERE子句的结果),对应于该表达式的当前记录将进入主查询的结果中.ALL测试则要求表达式与子查询返回的一系列的值的比较都产生True结果,才回返回True值.

例:主查询返回单价比任何一个折扣大于等于25%的产品的单价要高的所有产品

SELECT * FROM Products

WHERE UnitPrice>ANY

(SELECT UnitPrice FROM[Order Details] WHERE Discount>0.25)

2 检查表达式的值是否匹配子查询返回的一组值的某个值

语法:

[NOT]IN(子查询)

例:返回库存价值大于等于1000的产品.

SELECT ProductName FROM Products

WHERE ProductID IN

(SELECT PrdoctID FROM [Order DEtails]

WHERE UnitPrice*Quantity>= 1000)

3检测子查询是否返回任何记录

语法:

[NOT]EXISTS (子查询)

例:用EXISTS检索英国的客户

SELECT ComPanyName,ContactName

FROM Orders

WHERE EXISTS

(SELECT *

FROM Customers

WHERE Country = ‘UK" AND

Customers.CustomerID= Orders.CustomerID)

西柚不是西游

把链接字符串放在配置文件中,要改的时候直接改配置文件就可以了

这样的话,不需要重启应用程序

Chen

conStr="driver={SQL Server};server=(local);UID=crm;PWD=crmcrm;database=crm"

可以在此处修改与服务器的连接方式和登录权限。当然把链接字符串放在配置文件中是一种比较好的方式,程序易读易改

LuckySXyd

把链接字符串放在配置文件中,要改的时候直接改配置文件就可以了

这样的话,不需要重启应用程序 ;

在代码中定义全局类。存储连接字符串。这样使用方便。

相关推荐

Company,Name,是什么意思?

Company,Name公司名称
2023-07-16 09:08:325

company name是什么意思

company name [词典] 公司名称; [例句]Then, list the recruiter"s title and the company name and address.然后列出招聘员工的头衔、公司名字和地址。
2023-07-16 09:08:491

company name是什么意思

company name 公司名称
2023-07-16 09:08:582

company name是什么意思

company name公司名称双语例句1In addition, it contains one view that displays data listed by companyname.此外,它还包含了一个视图,用来显示按公司名称列出的数据。
2023-07-16 09:09:061

company name是什么意思

公司名称
2023-07-16 09:09:152

Company Name翻译中文

公司名称
2023-07-16 09:09:254

公司名称翻译成英文

济南思尼特软件有限公司英语翻译,列出3种仅供参考:1、Ji"nan Sinite Software Co., Ltd.2、Jinan, nita, software co., LTD3、Jinan Si Nite Software Ltd.
2023-07-16 09:09:3515

海淘company name怎么填

海淘company name填你注册的转运公司仓库地址。譬如走中邮海外购,他们美国仓库在特拉华免税州,那么你的收货地址就填他们家在特拉华的仓库地址就行了。
2023-07-16 09:10:021

altiumdesigner右下角写自己名字

altiumdesigner右下角写自己名字的方法为,按P,T,然后双击它进入编辑界面,在下拉菜单中选择=CompanyName即可。根据查询相关资料得知,修改AltiumDesigner右下角标题为自己名字需要按P,T,然后双击它进入编辑界面,在下拉菜单中选择=CompanyName完成。AltiumDesigner是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件使电路设计的质量和效率大大提高。
2023-07-16 09:10:091

yourcompanyname什么意思

your company name 网络 公司名称; 您公司名称; [例句]Before using this application, you need to enter your company name, address and related information.在使用此应用程序之前,您需要输入您的公司名称,地址和相关信息。
2023-07-16 09:10:161

查看电脑的用户名和公司名称很简单,只须用鼠标右键单击“计算机”,在弹出的快捷菜单中选择“属性”,在弹出的对话框里,就可以查看电脑的用户名和公司名称了。
2023-07-16 09:10:351

求公司名字和地址的英文翻译

Our address: Changde Avenue and willow Avenue InterchangeOriental beauty garden layerCompany name: Changde Yongtong speeding car sales Services Limited Company
2023-07-16 09:10:422

altium如何在原理图加上自己的名字?

按P,T,然后双击它进入编辑界面,在下拉菜单中选择=CompanyName 即可。
2023-07-16 09:11:321

Mastercam 9.1安装时要输入的user name和company name填什么?

两个都填Administrator如果你不是安装的完全版的话就可以随意填写安装好了以后会有个Crack来破解你的用户名和注册码的
2023-07-16 09:11:411

在安装office 2010时,无法将值companyname 写入注册表项SoftwareMicrosoftofficeCommonUserInfo

加QQ 远程帮助你安装 或者 下面方法 修改权限 步骤/方法1.依次打开“开始菜单——所有程序——附件”2.右击“命令提示符”,单击“以管理员身份运行”3.在命令提示符窗口下执行 secedit /configure /cfg %windir%infdefltbase.inf /db defltbase.sdb /verbose回车解决方法:1.下载并安装SubInACL 下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&;displaylang=en 2.在C:Program FilesWindows Resource KitsTools文件夹下创建一个名为reset.cmd的文件。 方法三:下载SubInAcl,从微软的命令行工具,它使管理员能够获得安全的有关文件,注册表项服务等,将安装到Program Files文件夹,复制SUBINACL.EXE文件/视窗/系统32文件夹。现在创建一个新的记事本,并粘贴在它下面的代码;subinacl /subkeyreg HKEY_LOCAL_MACHINE /setowner=administrators subinacl /subkeyreg HKEY_CURRENT_USER /setowner=administrators subinacl /subkeyreg HKEY_CLASSES_ROOT /setowner=administrators subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f cls Exit重命名的记事本重置,完整的名称将成为“reset.cmd”,作为管理员运行这个文件。这个过程现在需要几分钟,请不要关闭窗口可能会是什么。一旦这个过程完成后,在命令行窗口将自动关闭,你就可以成功安装Office赞同0| 评论
2023-07-16 09:11:481

两表关联查询SQL语句的,要怎么写?

select U.userId,U.companyId,U.userName,U.userAge,U.address from company C ,users U where U.companyId=C.companyId and C.company=1; 这句是查询腾讯所有用户的信息!
2023-07-16 09:11:595

sql 中的select 语句问题?

[]一般是索引的意思。不用也可以
2023-07-16 09:13:182

电脑里My Company Name,文件是什么文件

是你用软件时产生的缓冲和临时文件吧,翻译过来是”我的公司名字“。用360清理下垃圾和痕迹,看看还有没有。
2023-07-16 09:13:251

请问下面的数据库 关系代数表达式怎么写啊?

1.SELECT A.EmployeeId, A.EmployeeName, A.Block, A.UnitNo, A.Street, A.CityFROM Employee A ,Working B ,Company C WHERE A.EmployeeId = B.EmployeeId AND B.CompanyId = C.CompanyId AND C.CompanyName = "XYZ" ; 2. SELECT A.EmployeeId, A.EmployeeNameFROM Employee A ,Working B ,Company C WHERE A.EmployeeId = B.EmployeeId AND B.CompanyId = C.CompanyId AND C.City = A.City ; 3. SELECT A.EmployeeId, A.EmployeeNameFROM Employee A ,Working B ,Company C WHERE A.EmployeeId = B.EmployeeId AND B.CompanyId = C.CompanyId AND C.CompanyName = "City Bank" AND B.Salary > "$30000" ; 4. SELECT COUNT(A.EmployeeId),AVG(B.Salary),C.CompanyNameFROM Employee A ,Working B ,Company C WHERE A.EmployeeId = B.EmployeeId AND B.CompanyId = C.CompanyId GROUP BY C.CompanyName
2023-07-16 09:13:343

VS2010中Application.CompanyName怎么设置?

项目-属性里AssemblyInfo文件里
2023-07-16 09:13:531

亚马逊这个地址 咋写 Street address, P.O. box, company name

第一个写到路,第二个写12号501室,公司名称可以不写,最后邮政编码。
2023-07-16 09:14:011

数据库有两个表: company:字段companyId,companyName 表:employee:字段employeeId,employeeName

老兄把你这题结了 再提一个问吧
2023-07-16 09:14:103

如何:将数据从对象保存到数据库

有关更多信息,请参见 TableAdapter 概述。若要保存对象集合中的数据,请循环通过对象集合(例如,for-next 循环),然后使用 TableAdapter 的 DBDirect 方法之一将每个对象的值发送到数据库中。默认情况下,DBDirect 方法在 TableAdapter 上创建,能够直接对数据库执行操作。这些方法可以直接调用,它们不要求 DataSet 或DataTable 对象来协调更改即可将更新发送到数据库。注意配置TableAdapter 时,主查询必须提供足够的信息,才能创建 DBDirect 方法。例如,如果将 TableAdapter 配置为从未定义主键列的表中查询数据,它将不会生成 DBDirect 方法。 TableAdapter DBDirect 方法 说明TableAdapter.Insert向数据库中添加新记录,此方法允许将值作为方法参数传入各个列。TableAdapter.Update更新数据库中的现有记录。Update 方法将原始列值和新列值用作方法参数。原始值用于定位原始记录,新值用于更新该记录。通过将 DataSet、DataTable、DataRow、或 DataRow 数组用作方法参数,TableAdapter.Update 方法还可用于将数据集中的更改协调回数据库。TableAdapter.Delete在基于作为方法参数传入的原始列值的数据库中,删除其现有记录。将对象中的新记录保存到数据库中通过将值传递给 TableAdapter.Insert 方法可创建这些记录。下面的示例通过将 currentCustomer 对象中的值传递给 TableAdapter.Insert 方法,在 Customers 表中创建一项新的客户记录。 Visual Basic PrivateSub AddNewCustomer(ByVal currentCustomer As Customer) CustomersTableAdapter.Insert( _ currentCustomer.CustomerID, _ currentCustomer.CompanyName, _ currentCustomer.ContactName, _ currentCustomer.ContactTitle, _ currentCustomer.Address, _ currentCustomer.City, _ currentCustomer.Region, _ currentCustomer.PostalCode, _ currentCustomer.Country, _ currentCustomer.Phone, _ currentCustomer.Fax) EndSub C# privatevoid AddNewCustomers(Customer currentCustomer) { customersTableAdapter.Insert( currentCustomer.CustomerID, currentCustomer.CompanyName, currentCustomer.ContactName, currentCustomer.ContactTitle, currentCustomer.Address, currentCustomer.City, currentCustomer.Region, currentCustomer.PostalCode, currentCustomer.Country, currentCustomer.Phone, currentCustomer.Fax); } J# privatevoid AddNewCustomers(Customer currentCustomer) { northwindDataSetCustomersTableAdapter.Insert( currentCustomer.get_CustomerID(), currentCustomer.get_CompanyName(), currentCustomer.get_ContactName(), currentCustomer.get_ContactTitle(), currentCustomer.get_Address(), currentCustomer.get_City(), currentCustomer.get_Region(), currentCustomer.get_PostalCode(), currentCustomer.get_Country(), currentCustomer.get_Phone(), currentCustomer.get_Fax()); }将对象中的现有记录更新到数据库修改记录:调用 TableAdapter.Update 方法并传入新值可更新记录,而传入原始值可定位记录。注意对象需要保留其原始值,才能将它们传递给 Update 方法。此示例使用前缀为 orig 的属性存储原始值。下面的示例通过将 Customer 对象中的新值和原始值传递给 TableAdapter.Update 方法,更新 Customers 表中的现有记录。 Visual Basic PrivateSub UpdateCustomer(ByVal cust As Customer) CustomersTableAdapter.Update( _ cust.CustomerID, _ cust.CompanyName, _ cust.ContactName, _ cust.ContactTitle, _ cust.Address, _ cust.City, _ cust.Region, _ cust.PostalCode, _ cust.Country, _ cust.Phone, _ cust.Fax, _ cust.origCustomerID, _ cust.origCompanyName, _ cust.origContactName, _ cust.origContactTitle, _ cust.origAddress, _ cust.origCity, _ cust.origRegion, _ cust.origPostalCode, _ cust.origCountry, _ cust.origPhone, _ cust.origFax) EndSub C# privatevoid UpdateCustomer(Customer cust) { customersTableAdapter.Update( cust.CustomerID, cust.CompanyName, cust.ContactName, cust.ContactTitle, cust.Address, cust.City, cust.Region, cust.PostalCode, cust.Country, cust.Phone, cust.Fax, cust.origCustomerID, cust.origCompanyName, cust.origContactName, cust.origContactTitle, cust.origAddress, cust.origCity, cust.origRegion, cust.origPostalCode, cust.origCountry, cust.origPhone, cust.origFax); } J# privatevoid UpdateCustomer(Customer cust) { northwindDataSetCustomersTableAdapter.Update( cust.get_CustomerID(), cust.get_CompanyName(), cust.get_ContactName(), cust.get_ContactTitle(), cust.get_Address(), cust.get_City(), cust.get_Region(), cust.get_PostalCode(), cust.get_Country(), cust.get_Phone(), cust.get_Fax(), cust.get_origCustomerID(), cust.get_origCompanyName(), cust.get_origContactName(), cust.get_origContactTitle(), cust.get_origAddress(), cust.get_origCity(), cust.get_origRegion(), cust.get_origPostalCode(), cust.get_origCountry(), cust.get_origPhone(), cust.get_origFax()); }删除数据库中的现有记录通过调用 TableAdapter.Delete 方法并传入原始值定位记录,可删除记录。注意对象需要保留其原始值,才能将它们传递给 Delete 方法。 Visual Basic PrivateSub DeleteCustomer(ByVal cust As Customer) CustomersTableAdapter.Delete( _ cust.origCustomerID, _ cust.origCompanyName, _ cust.origContactName, _ cust.origContactTitle, _ cust.origAddress, _ cust.origCity, _ cust.origRegion, _ cust.origPostalCode, _ cust.origCountry, _ cust.origPhone, _ cust.origFax) EndSub C# privatevoid DeleteCustomer(Customer cust) { customersTableAdapter.Delete( cust.origCustomerID, cust.origCompanyName, cust.origContactName, cust.origContactTitle, cust.origAddress, cust.origCity, cust.origRegion, cust.origPostalCode, cust.origCountry, cust.origPhone, cust.origFax); } J# privatevoid DeleteCustomer(Customer cust) { northwindDataSetCustomersTableAdapter.Delete( cust.get_origCustomerID(), cust.get_origCompanyName(), cust.get_origContactName(), cust.get_origContactTitle(), cust.get_origAddress(), cust.get_origCity(), cust.get_origRegion(), cust.get_origPostalCode(), cust.get_origCountry(), cust.get_origPhone(), cust.get_origFax()); }安全您必须具有相应的权限,才能对数据库中的表执行选定的 INSERT、UPDATE 或 DELETE。
2023-07-16 09:14:181

mysql某个数据表无法写入数据。。。

你把你的查询语句echo 一下 出来看看是什么
2023-07-16 09:14:284

求教php sql字段值相同,合并结果

连表查询可以解决
2023-07-16 09:14:363

SQL更新每条记录的最后几位该怎么写?

先取再写,用存储过程
2023-07-16 09:14:528

SQL Server数据库删除数据集中重复数据实例讲解

SQLServer数据库操作中,有时对于表中的结果集,满足一定规则我们则认为是重复数据,而这些重复数据需要删除。如何删除呢?本文我们通过一个例子来加以说明。例子如下:如下只要companyName,invoiceNumber,customerNumber三者都相同,我们则认为是重复数据,下面的例子演示了如何删除。declare@InvoiceListMastertable(IDintidentityprimarykey,companyNameNchar(20),invoiceNumberint,CustomerNumberint,rmaNumberint)insert@InvoiceListMasterselectN"华为",1001,100,200unionallselectN"华为",1001,100,300unionallselectN"华为",1001,100,301unionallselectN"中兴",1002,200,1unionallselectN"中兴",1002,200,2select*from@InvoiceListMasterDELETEAfrom(selectrown=ROW_NUMBER()over(partitionbycompanyname,invoicenumber,customerNumberorderbycompanyname,invoicenumber,customerNumber),companyname,invoicenumber,customerNumberfrom@InvoiceListMaster)awhereexists(select1from(selectrown=ROW_NUMBER()over(partitionbycompanyname,invoicenumber,customerNumberorderbycompanyname,invoicenumber,customerNumber),companyname,invoicenumber,customerNumberfrom@InvoiceListMaster)bwhereb.companyName=a.companyNameandb.invoiceNumber=a.invoiceNumberandb.CustomerNumber=a.CustomerNumberanda.rown>b.rown)select*from@InvoiceListMaster以上的例子就演示了SQLServer数据库删除数据集中重复数据的过程,希望本次的介绍能够对您有所收获!
2023-07-16 09:15:061

SQL查询语句

分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题描述: 急,谁能帮我把这些语句写出来,我加分呀~~~谢了~~ 在Northwind数据库中 1、从产品表Products当中查询列产品名称(ProductName), 产品库存价值(UnitPrice*UnitsInStock),并且使用汉字作为查询列的别名2、查询表Orders当中,定单日期(OrderDate)为7月份的定单 3、查询表Employees中员工的年龄和工龄 4、查询表Employees中员工的FisrtName以M开头,LastName以"an"结束的员工信息 5、查询表Employees中员工的FisrtName以N或S开头的员工信息. 6、查询表Customers中City值为London或Berlin或Madrid的客户信息 7、查询表Customers中Region列为Null的客户公司名称(CompanyName), 联系人名称(ContactName),客户地址(Address) 8、查询表Employees的姓名(由LastName和FirstName组成),所在城市(City), 年龄和工龄, 并且要求员工的年龄按降序排列,员工的工龄按升序排列. 9、检索单价在10.00到21.00之间所有产品的产品名称和单价 10、products表存储的是产品的信息 要求:查询products表中所有产品单价的平均值 11、在Order Details表查询定购总数量多于1200的产品ID和定购数量 12、查询products表中每类产品(CategoryID表示类别)的单价平均值,要求查看类别ID,单价平均值,并只筛选出单价平均值超过20的数据 解析: 在Northwind数据库中 1、从产品表Products当中查询列产品名称(ProductName), 产品库存价值(UnitPrice*UnitsInStock),并且使用汉字作为查询列的别名 select ProductName as 产品名称, UnitPrice*UnitsInStock as 产品库存价值 from Products 2、查询表Orders当中,定单日期(OrderDate)为7月份的定单 select * from Orders where OrderDate 3、查询表Employees中员工的年龄和工龄 select 年龄,工龄 from Employees 4、查询表Employees中员工的FisrtName以M开头,LastName以"an"结束的员工信息 select * from Employees where FisrtName like "M%" and LastName like "%an" 5、查询表Employees中员工的FisrtName以N或S开头的员工信息. select * from Employees where FisrtName like "N%" or FisrtName like "S%" 6、查询表Customers中City值为London或Berlin或Madrid的客户信息 select * from Customers where City="London" or City="Berlin" or City="Madrid" 7、查询表Customers中Region列为Null的客户公司名称(CompanyName), 联系人名称(ContactName),客户地址(Address) select CompanyName,ContactName,Address from Customers where Region=Null 8、查询表Employees的姓名(由LastName和FirstName组成),所在城市(City), 年龄和工龄, 并且要求员工的年龄按降序排列,员工的工龄按升序排列. select LastName,FirstName,City,年龄,工龄 from Employees order by 年龄 desc,工龄 asc 9、检索单价在10.00到21.00之间所有产品的产品名称和单价 select 产品名称,单价 from products where 单价>=10.00 and 单价<=21.00 10、products表存储的是产品的信息 要求:查询products表中所有产品单价的平均值 select avg (单价) from products 11、在Order Details表查询定购总数量多于1200的产品ID和定购数量 select ID,定购数量 from Order Details where 定购总数量>1200 12、查询products表中每类产品(CategoryID表示类别)的单价平均值,要求查看类别ID,单价平均值,并只筛选出单价平均值超过20的数据 select avg(单价),ID from products group by CategoryID select * from products where avg(CategoryID)>20
2023-07-16 09:15:151

用java声明一个 Employee 类,其中包括单位名称,姓名,街道地址,城市和邮编等属属性。

public class Employee{String companyName; // 单位名称String name; // 姓名String address; // 街道地址String city; // 城市String mailCode; // 邮编char sex; // 性别void change_name(String name){name = "需要修改的名字";this.name = name;}void display(){System.out.println("单位名称:"+this.companyName+",姓名:"+this.name+",街道地址:"+this.address+",性别:"+this.sex+",邮编:"+this.mailCode+",城市:"+this.city );}}
2023-07-16 09:16:041

泛型的where中lambda表达式怎么调出当前循环

public ActionResult Index(int? id=1){int pageIndex=id ?? 1;int pageSize;//if(!int.TryParse(Request["pageIndex"],out pageIndex))// pageIndex=1;if(!int.TryParse(Request["pageSize"],out pageSize))pageSize=20;Func<Xsj_Company, bool> whereLambda = c => true;//查询条件表达式,根据查询条件变化而变化string companyName = Request["CompanyName"];//传入的查询条件,可为空string regNumber = Request["RegNumber"];//传入的查询条件,可为空if (companyName != null){whereLambda = c => c.CompanyName.Contains(companyName);}if (!String.IsNullOrEmpty(regNumber)){whereLambda = c => c.RegID.Contains(regNumber);}int totalCount;var companylist = companyService.LoadPageEntities(pageIndex, pageSize, out totalCount, whereLambda, c => c.ID, true);PagedList<Xsj_Company> myPage = companylist.ToPagedList(pageIndex, pageSize);myPage.TotalItemCount = totalCount;myPage.CurrentPageIndex = (int)(id ?? 1);return View(myPage);}
2023-07-16 09:16:121

关于sql server中存储过程的一个问题

row_number()函数是返回按某一数字列排序后的行号。如果在sqlserver 2000下运行可以利用identity函数,导出临时表(如果数据量很大,最好不要这么去做,想别的方法吧)
2023-07-16 09:16:203

java判断输入的一个字符 是字母 还是数字 或者是空格

没有看懂是什么意思
2023-07-16 09:16:283

vb 打印报表问题

分组标头部分可以包含 Customers 命令的任何字段,然而,出于演示目的,此时只显示 Customer 名。 实例我可以贴出来。
2023-07-16 09:16:352

company name是什么意思

company name公司名称例句:1.Did it say anything, have a company name? 什么样的制服有公司名字吗?
2023-07-16 09:16:561

company name 是什么意思?

的确是 公司名称
2023-07-16 09:17:062

请问如何查看计算机的user name和company name

控制面板
2023-07-16 09:17:132

越南德诚公司英语名字和英语简介

DUC THANH WOOD PROCESSING JOINT STOCK COMPANY (DTWOODVN) DUC THANH"S WOOD PRODUCT – "HOME PARADISE” INTRODUCTION: Established on May 19th, 1991, Duc Thanh is one of the leading manufacturers in Vietnam specializing in producing kitchenware, household utensils and children"s wooden toys. Duc Thanh has achieved ISO 9001 : 2008 certificate, which makes sure that we can supply our customers the best products and services.With a labor force over 1000 skillful workers, modern equipment and machinery and diversified product range, Duc Thanh product has been exported to over 40 countries around the world and also distributed at many supermarkets and furniture shops nationwide. u2022 COMPANY PROFILE Company name : Established : DUC THANH WOOD PROCESSING JOINT STOCK CO. (DTWOODVN)May 19, 1991HCMC Head Office & Factory : Address : 21/6D Phan Huy Ich, Ward 14, Go Vap, HCMC., Viet Nam.Tel. : ++84. 8. 3589 4287 - Fax : ++84. 8. 3589 4288Map to Head Office & Factory 2Binh Duong Factory : Address : Zone 9, Long Hoi, Tan Hiep Commune, Tan Uyen Dist, Binh Duong Province., Viet Nam.Tel. : ++84. 650. 3631 491 - Fax : ++84. 650. 3631 490Map to Binh Duong Factory Showroom : Address : 172 Nguyen Van Troi Street, Ward 8, Phu Nhuan District.Tel. : ++84. 8. 3844 0721 - Fax : ++84. 8. 3844 0722
2023-07-16 09:17:301

name of company

可以的…名词修饰名词相对于一个类比…即可以等价理解于:在这里company是name的形容词
2023-07-16 09:17:381

altiumdesigner右下角写自己名字

修改altium designer原理图右下角信息【ql君】qlexcel原创物联网领域优质创作者关注8点赞·45017人阅读要修改原理图右下角信息,比如“Title”、“Size”、“Number”。。。只需要“Place”--“Text String”,然后按“Tab”修改Properties。比如要修改右下角的“Title”,那么选择确定后,出现“*”,然后拖到右下角“Title”栏中。点鼠标右键选择“Options”--“Document Options”,在“Parameters”里找到“Title”,把它的值改为自己想要的标题即可。
2023-07-16 09:17:542

我要做一个asp.net网站的登录界面,但是后台代码不会写啊!求高手指点,最好能写出代码来!

FailureText.Text="";Usersusers=newUsers();List<Users>userList=users.Find(string.Format("{0}="{1}"and{2}="{3}"and{4}=1",Users.LoginID_Field,UserName.Text.Trim(),Users.LoginPass_Field,Password.Text.Trim(),Users.IsEnabled_Field));region2014-3-21if(userList.Count==1){intUserID=userList.First().ObjectID;intCompanyID=Convert.ToInt32(CompanyName.Value);UsersFactoryusersFact=newUsersFactory();//List<UsersFactory>userFactList=usersFact.Find(string.Format("{0}="{1}"and{2}="{3}"and{4}=1",UsersFactory.UserID_Field,UserID,UsersFactory.CompanyID_Field,CompanyID,UsersFactory.IsEnabled_Field));//if(userFactList.Count==1){panyID"]=CompanyID.ToString();MyCookie["CompanyName"]=CompanyName.Text;Response.Cookies.Add(MyCookie);stringurl="~/Default.aspx";Response.Redirect(url);}else{FailureText.Text="没有对应公司权限,请选择其他公司后重新登陆...";}}else{FailureText.Text="账号密码不存在,请确认后重新登陆...";}
2023-07-16 09:18:221

billing information中的institution/company name怎么填

自己家不填,公司就写公司名字
2023-07-16 09:18:302

电脑里My Company Name,文件是什么文件

是你用软件时产生的缓冲和临时文件吧,翻译过来是”我的公司名字“。用360清理下垃圾和痕迹,看看还有没有。
2023-07-16 09:18:371

asp.net中如何拼接lambda表达式查询条件?

whereLambda.where(c=>(companyName!=null)&&c.CompanyName.Contains(companyName)).where(c=>(!String.IsNullOrEmpty(regNumber))&&c.RegID.Contains(regNumber))差不多是这样
2023-07-16 09:18:441

SQL 查询总数

SELECT T.*, ISNULL(U.UserNumber, 0) AS UserNumber FROM( select * from ( select count(*) over() total, row_number() over(order by Company.CompanyId desc) row,Company.CompanyId,CompanyName from Company ) as s where row between 3*(1-1)+1 and 3*1) AS TLEFT JOIN(SELECT [CompanyId], COUNT([UserId]) AS UserNumberFROM [UserInfo]GROUP BY [CompanyId]) AS UON T.CompanyId = U.CompanyId
2023-07-16 09:18:531

关于ligerUI下拉列表两级联动的问题

var tempextno="0";{ display: "分机号", name: "extno",width:50, type: "select", editor: { type: "select", url: "accountaction!getaccountextno.action", parms :{exttype:0},valueField:"extno", textField:"extno", onSelected:function(value){ tempextno=value; } }},{ display: "分机1", name: "extnoa", width:50, type: "select", editor: { type: "select",valueField:"extno", textField:"extno", ext:function(){ var options = { url:"accountaction!getaccountextno.action", parms:{exttype:tempextno}, }; return options; } }}
2023-07-16 09:19:001

php数据库添加、删除、修改数据(mysql)

吧你问题描述清楚点,不然无法回答
2023-07-16 09:19:094

SQL查询语句

select [顾客],[书籍] from [购买]是这样的吗?
2023-07-16 09:19:4510

数据库查询结果的动态排序

  在公共新闻组中 一个经常出现的问题是 怎样才能根据传递给存储过程的参数返回一个排序的输出? 在一些高水平专家的帮助之下 我整理出了这个问题的几种解决方案    一 用IF ELSE执行预先编写好的查询   对于大多数人来说 首先想到的做法也许是 通过IF ELSE语句 执行几个预先编写好的查询中的一个 例如 假设要从Northwind数据库查询得到一个货主(Shipper)的排序列表 发出调用的代码以存储过程参数的形式指定一个列 存储过程根据这个列排序输出结果 Listing 显示了这种存储过程的一个可能的实现(GetSortedShippers存储过程)   【Listing : 用IF ELSE执行多个预先编写好的查询中的一个】   CREATE PROC GetSortedShippers   @OrdSeq AS int   AS   IF @OrdSeq =   SELECT * FROM Shippers ORDER BY ShipperID   ELSE IF @OrdSeq =   SELECT * FROM Shippers ORDER BY CompanyName   ELSE IF @OrdSeq =   SELECT * FROM Shippers ORDER BY Phone   这种方法的优点是代码很简单 很容易理解 SQL Server的查询优化器能够为每一个SELECT查询创建一个查询优化计划 确保代码具有最优的性能 这种方法最主要的缺点是 如果查询的要求发生了改变 你必须修改多个独立的SELECT查询(在这里是三个)    二 用列名字作为参数   另外一个选择是让查询以参数的形式接收一个列名字 Listing 显示了修改后的GetSortedShippers存储过程 CASE表达式根据接收到的参数 确定SQL Server在ORDER BY子句中使用哪一个列值 注意 ORDER BY子句中的表达式并未在SELECT清单中出现 在ANSI SQL 标准中 ORDER BY子句中不允许出现没有在SELECT清单中指定的表达式 但ANSI SQL 标准允许 SQL Server一直允许这种用法   【Listing 用列名字作为参数 第一次尝试】   CREATE PROC GetSortedShippers   @ColName AS sysname   AS   SELECT *   FROM Shippers   ORDER BY   CASE @ColName   WHEN ShipperID THEN ShipperID   WHEN CompanyName THEN CompanyName   WHEN Phone THEN Phone   ELSE NULL   END   现在 我们来试一下新的存储过程 以参数的形式指定ShipperID列   EXEC GetSortedShippers ShipperID   此时一切正常 但是 当我们视图把CompanyName列作为参数调用存储过程时 它不再有效   EXEC GetSortedShippers CompanyName   仔细看一下错误信息   Server: Msg Level State Procedure GetSortedShippers Line   Syntax error converting the nvarchar value Speedy   Express to a column of data type int   它显示出 SQL Server试图把 Speedy Express (nvarchar数据类型)转换成一个整数值   当然 这个操作是不可能成功的 出现错误的原因在于 按照 数据类型优先级 规则 CASE表示式中最高优先级的数据类型决定了表达式返回值的数据类型 数据类型优先级 规则可以在SQL Server Books Online(BOL)找到 它规定了int数据类型的优先级要比nvarchar数据类型高 前面的代码要求SQL Server按照CompanyName排序输出 CompanyName是nvarchar数据类型 这个CASE表达式的返回值可能是ShipperID(int类型) 可能是CompanyName(nvarchar类型) 或Phone(nvarchar类型) 由于int类型具有较高的优先级 因此CASE表达式返回值的数据类型应该是int   为了避免出现这种转换错误 我们可以尝试把ShipperID转换成varchar数据类型 采用这种方法之后 nvarchar将作为最高优先级的数据类型被返回 Listing 显示了修改后的GetSortedShippers存储过程   【Listing 用列名字作为参数 第二次尝试】   ALTER PROC GetSortedShippers   @ColName AS sysname   AS   SELECT *   FROM Shippers   ORDER BY   CASE @ColName   WHEN ShipperID   THEN CAST(ShipperID AS varchar( ))   WHEN CompanyName   THEN CompanyName   WHEN Phone   THEN Phone   ELSE NULL   END   现在 假设我们再把三个列名字中的任意一个作为参数调用存储过程 输出结果看起来正确 看起来就象指定的列正确地为查询输出提供了排序标准 但这个表只有三个货主 它们的ID分别是 假设我们把更多的货主加入到表 如Listing 所示(ShipperID列有IDENTITY属性 SQL Server自动为该列生成值)   【Listing 向Shippers表插入一些记录】   INSERT INTO Shippers VALUES( Shipper ( ) )   INSERT INTO Shippers VALUES( Shipper ( ) )   INSERT INTO Shippers VALUES( Shipper ( ) )   INSERT INTO Shippers VALUES( Shipper ( ) )   INSERT INTO Shippers VALUES( Shipper ( ) )   INSERT INTO Shippers VALUES( Shipper ( ) )   INSERT INTO Shippers VALUES( Shipper ( ) )   现在调用存储过程 指定ShipperID作为排序列   EXEC GetSortedShippers ShipperID   表一显示了存储过程的输出 ShipperID等于 的记录位置错误 因为这个存储过程的排序输出是字符排序 而不是整数排序 按照字符排序时 排列在 的前面 因为 的开始字符是   表一 记录排序错误的查询结果   ShipperID   CompanyName    Phone         Speedy Express  ( )         Shipper    ( )         United Package  ( )         Federal Shipping ( )         Shipper     ( )         Shipper     ( )         Shipper     ( )         Shipper     ( )         Shipper     ( )         Shipper     ( )   为了解决这个问题 我们可以用前置的 补足ShipperID值 使得ShipperID值都有同样的长度 按照这种方法 基于字符的排序具有和整数排序同样的输出结果 修改后的存储过程如Listing 所示 十个 被置于ShipperID的绝对值之前 而在结果中 代码只是使用最右边的 个字符 SIGN函数确定在正数的前面加上加号(+)前缀 还是在负数的前面加上负号( )前缀 按照这种方法 输出结果总是有 个字符 包含一个 + 或 字符 前导的字符 以及ShipperID的绝对值   【Listing 用列名字作为参数 第三次尝试】   ALTER PROC GetSortedShippers   @ColName AS sysname   AS   SELECT *   FROM Shippers   ORDER BY   CASE @ColName   WHEN ShipperID THEN CASE SIGN(ShipperID)   WHEN THEN   WHEN THEN +   WHEN THEN +   ELSE NULL   END + RIGHT(REPLICATE( ) + CAST(ABS(ShipperID) AS varchar( )) )   WHEN CompanyName THEN CompanyName   WHEN Phone THEN Phone   ELSE NULL   END   如果ShipperID的值都是正数 加上符号前缀就没有必要 但为了让方案适用于尽可能多的范围 本例加上了符号前缀 排序时 在 + 的前面 所以它可以用于正 负数混杂排序的情况   现在 如果我们用任意三个列名字之一作为参数调用存储过程 存储过程都能够正确地返回结果 Richard Romley提出了一种巧妙的处理方法 如Listing 所示 它不再要求我们搞清楚可能涉及的列数据类型 这种方法把ORDER BY子句分成三个独立的CASE表达式 每一个表达式处理一个不同的列 避免了由于CASE只返回一种特定数据类型的能力而导致的问题   【Listing 用列名字作为参数 Romley提出的方法】   ALTER PROC GetSortedShippers   @ColName AS sysname   AS   SELECT *   FROM Shippers   ORDER BY   CASE @ColName WHEN ShipperID   THEN ShipperID ELSE NULL END   CASE @ColName WHEN CompanyName   THEN CompanyName ELSE NULL END   CASE @ColName WHEN Phone   THEN Phone ELSE NULL END   按照这种方法编写代码 SQL Server能够为每一个CASE表达式返回恰当的数据类型 而且无需进行数据类型转换 但应该注意的是 只有当指定的列不需要进行计算时 索引才能够优化排序操作   三 用列号作为参数   就象第一个方案所显示地那样 你也许更喜欢用列的编号作为参数 而不是使用列的名字(列的编号即一个代表你想要作为排序依据的列的数字) 这种方法的基本思想与使用列名字作为参数的思想一样 CASE表达式根据指定的列号确定使用哪一个列进行排序 Listing 显示了修改后的GetSortedShippers存储过程   【Listing 用列号作为参数】   ALTER PROC GetSortedShippers   @ColNumber AS int   AS   SELECT *   FROM Shippers   ORDER BY   CASE @ColNumber   WHEN THEN CASE SIGN(ShipperID)   WHEN THEN   WHEN THEN +   WHEN THEN +   ELSE NULL   END + RIGHT(REPLICATE( ) + CAST(ABS(ShipperID) AS varchar( )) )   WHEN THEN CompanyName   WHEN THEN Phone   ELSE NULL   END   当然 在这里你也可以使用Richard的方法 避免ORDER BY子句中列数据类型带来的问题 如果要根据ShipperID排序输出 你可以按照下面的方式调用修改后的GetSortedShippers存储过程 EXEC GetSortedShippers   四 动态执行   使用动态执行技术 我们能够更轻松地编写出GetSortedShippers存储过程 使用这种方法 我们只需动态地构造出SELECT语句 然后用EXEC()命令执行这个SELECT语句 假设传递给存储过程的参数是列的名字 存储过程可以大大缩短   ALTER PROC GetSortedShippers   @ColName AS sysname   AS   EXEC( SELECT * FROM Shippers ORDER BY + @ColName)   在SQL Server 和 中 你可以用系统存储过程sp_ExecuteSQL替代Exec()命令 BOL说明了使用sp_ExecuteSQL比使用Exec()命令更有利的地方 一般地 如果满足以下三个条件 你能够在不授予存储过程所涉及对象权限的情况下 授予执行存储过程的权限   首先 只使用Data Manipulation Language(DML)语言(即SELECT INSERT UPDATE DELETE);其次 所有被引用的对象都有与存储过程同样的所有者;第三 没有使用动态命令   上面的存储过程不能满足第三个条件 在这种情况下 你必须为所有需要使用存储过程的用户和组显式地授予Shippers表的SELECT权限 如果这一点可以接受的话 一切不存在问题 类似地 你可以修改存储过程 使它接受一个列号参数 如Listing 所示   【Listing 用列号作为参数 动态执行(代码较长的方法)】   ALTER PROC GetSortedShippers   @ColNumber AS int   AS   DECLARE @cmd AS varchar( )   SET @cmd = SELECT * FROM Shippers ORDER BY +   CASE @ColNumber   WHEN THEN ShipperID   WHEN THEN CompanyName   WHEN THEN Phone   ELSE NULL   END   EXEC(@cmd)   注意 当你使用了函数时 你应该在一个变量而不是EXEC()命令内构造SELECT语句 此时 CASE表达式动态地确定使用哪一个列 还有一种更简短的格式 T SQL允许在ORDER BY子句中指定SELECT清单中列的位置 如Listing 所示 这种格式遵从了SQL 标准 但ANSI SQL 标准不支持这种格式 所以最好不要使用这种格式   【Listing 列号作为参数 动态执行(代码较短的方法)】   ALTER PROC GetSortedShippers   @ColNumber AS int   AS   DECLARE @cmd AS varchar( )   SET @cmd = SELECT * FROM Shippers ORDER BY + CAST(@ColNumber AS varchar( ))   EXEC(@cmd)   五 用户定义函数   如果你使用的是SQL Server 想要编写一个用户定义的函数(UDF) 这个用户定义函数接受列的名字或编号为参数 返回排序的结果集 Listing 显示了大多数程序员当成第一选择的方法   【Listing 列名字作为参数 使用UDF】   CREATE FUNCTION ufn_GetSortedShippers   ( @ColName AS sysname )   RETURNS TABLE   AS   RETURN   SELECT *   FROM Shippers   ORDER BY   CASE @ColName   WHEN ShipperID THEN CASE SIGN(ShipperID)   WHEN THEN   WHEN THEN +   WHEN THEN +   ELSE NULL   END + RIGHT(REPLICATE( ) + CAST(ABS(ShipperID) AS   varchar( )) )   WHEN CompanyName THEN CompanyName   WHEN Phone THEN Phone   ELSE NULL   END   但是 SQL Server不接受这个函数 它将返回如下错误信息   Server: Msg Level State Procedure ufn_GetSortedShippers Line   The ORDER BY clause is invalid in views inline functions and   subqueries unless TOP is also specified   注意错误信息中的 unless SQL Server 不允许在视图 嵌入式UDF 子查询中出现ORDER BY子句 因为它们都应该返回一个表 表不能指定行的次序 然而 如果使用了TOP关键词 ORDER BY子句将帮助确定查询所返回的行 因此 如果指定了TOP 你还可以同时指定ORDER BY 由于在带有TOP的UDF中允许使用ORDER BY子句 你可以使用一个技巧 把 SELECT * 替换成 SELECT TOP PERCENT * 这样 你就能够成功地构造出一个接受列名字或编号为参数 返回排序结果的函数   新构造的函数可以按照如下方式调用   SELECT * FROM ufn_GetSortedShippers( ShipperID ) lishixinzhi/Article/program/SQL/201311/16169
2023-07-16 09:20:091

php数据库添加、删除、修改数据(mysql)

一、PHP操作MySql数据库新增数据?php$query="INSERTINTOgrade(name,email,point,regdate)VALUE("李三","yc60.com@gmail.com",,NOW())";@mysql_query($query)ordie("添加数据出错:".mysql_error());?修改数据?php$query="UPDATEgradeSETname="小可爱"WHEREid=6";@mysql_query($query)ordie("修改出错:".mysql_error());?删除数据?php$query="DELETEFROMgradeWHEREid=6";@mysql_query($query)ordie("删除错误:".mysql_error());?显示数据?php$query="SELECTid,name,email,pointFROMgrade";$result=@mysql_query($query)ordie("查询语句出错:".mysql_error());while(!!$row=mysql_fetch_array($result)){echo$row["id"]."----".$row["name"]."----".$row["email"]."----".$row["point"];echo"<br/";}?>二、其他常用函数mysql_fetch_row():从结果集中取得一行作为枚举数组mysql_fetch_assoc():从结果集中取得一行作为关联数组mysql_fetch_array():从结果集中取得一行作为关联数组,或数字数组,或二者兼有mysql_fetch_lengths():取得结果集中每个输出的长度mysql_field_name():取得结果中指定字段的字段名mysql_num_rows():取得结果集中行的数目mysql_num_fields():取得结果集中字段的数目mysql_get_client_info():取得MySQL客户端信息mysql_get_host_info():取得MySQL主机信息mysql_get_proto_info():取得MySQL协议信息mysql_get_server_info():取得MySQL服务器信息
2023-07-16 09:20:191

VB6 怎样获取DLL 版本

从网上搜集到的代码,Command1里得到的udtFileInfo.ProductVersion就是dll的版本号"**************************************" Windows API/Global Declarations for :Get Version Number for EXE, DLL or OCX files"**************************************Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As LongPrivate Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As LongPrivate Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As LongPrivate Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal Length As Long)Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As LongPrivate Type FILEINFO CompanyName As String FileDescription As String FileVersion As String InternalName As String LegalCopyright As String OriginalFileName As String ProductName As String ProductVersion As StringEnd TypePrivate Enum VerisonReturnValue eOK = 1 eNoVersion = 2End Enum"**************************************" Name: Get Version Number for EXE, DLL" or OCX files" Description:This function will retriev" e the version number, product name, orig" inal program name (like if you right cli" ck on the EXE file and select properties" , then select Version tab, it shows you" all that information) etc" By: Serge"" Returns:FileInfo structurePrivate Function GetFileVersionInformation(ByRef pstrFieName As String, ByRef tFileInfo As FILEINFO) As VerisonReturnValue Dim lBufferLen As Long, lDummy As Long Dim sBuffer() As Byte Dim lVerPointer As Long Dim lRet As Long Dim Lang_Charset_String As String Dim HexNumber As Long Dim i As Integer Dim strTemp As String "Clear the Buffer tFileInfo tFileInfo.CompanyName = "" tFileInfo.FileDescription = "" tFileInfo.FileVersion = "" tFileInfo.InternalName = "" tFileInfo.LegalCopyright = "" tFileInfo.OriginalFileName = "" tFileInfo.ProductName = "" tFileInfo.ProductVersion = "" lBufferLen = GetFileVersionInfoSize(pstrFieName, lDummy)If lBufferLen < 1 Then GetFileVersionInformation = eNoVersion Exit Function End If ReDim sBuffer(lBufferLen) lRet = GetFileVersionInfo(pstrFieName, 0&, lBufferLen, sBuffer(0))If lRet = 0 Then GetFileVersionInformation = eNoVersion Exit Function End If lRet = VerQueryValue(sBuffer(0), "VarFileInfoTranslation", lVerPointer, lBufferLen)If lRet = 0 Then GetFileVersionInformation = eNoVersion Exit Function End If Dim bytebuffer(255) As Byte MoveMemory bytebuffer(0), lVerPointer, lBufferLen HexNumber = bytebuffer(2) + bytebuffer(3) * &H100 + bytebuffer(0) * &H10000 + bytebuffer(1) * &H1000000 Lang_Charset_String = Hex(HexNumber) "Pull it all apart: "04------= SUBLANG_ENGLISH_USA "--09----= LANG_ENGLISH " ----04E4 = 1252 = Codepage for Windows " :MultilingualDo While Len(Lang_Charset_String) < 8 Lang_Charset_String = "0" & Lang_Charset_String Loop Dim strVersionInfo(7) As String strVersionInfo(0) = "CompanyName" strVersionInfo(1) = "FileDescription" strVersionInfo(2) = "FileVersion" strVersionInfo(3) = "InternalName" strVersionInfo(4) = "LegalCopyright" strVersionInfo(5) = "OriginalFileName" strVersionInfo(6) = "ProductName" strVersionInfo(7) = "ProductVersion" Dim buffer As StringFor i = 0 To 7 buffer = String(255, 0) strTemp = "StringFileInfo" & Lang_Charset_String _ & "" & strVersionInfo(i) lRet = VerQueryValue(sBuffer(0), strTemp, _ lVerPointer, lBufferLen)If lRet = 0 Then GetFileVersionInformation = eNoVersion Exit Function End If lstrcpy buffer, lVerPointer buffer = Mid$(buffer, 1, InStr(buffer, vbNullChar) - 1)Select Case i Case 0 tFileInfo.CompanyName = buffer Case 1 tFileInfo.FileDescription = buffer Case 2 tFileInfo.FileVersion = buffer Case 3 tFileInfo.InternalName = buffer Case 4 tFileInfo.LegalCopyright = buffer Case 5 tFileInfo.OriginalFileName = buffer Case 6 tFileInfo.ProductName = buffer Case 7 tFileInfo.ProductVersion = buffer End SelectNext iGetFileVersionInformation = eOKEnd FunctionPrivate Sub Command1_Click() Dim strFile As String Dim udtFileInfo As FILEINFO On Error Resume Next strFile = InputBox("请输入dll的路径:") If GetFileVersionInformation(strFile, udtFileInfo) = eNoVersion Then MsgBox "No version available For this file", vbInformation Exit Sub End If strinfo = "Company Name: " & udtFileInfo.CompanyName & vbCrLf strinfo = strinfo & "File Description:" & udtFileInfo.FileDescription & vbCrLf strinfo = strinfo & "File Version:" & udtFileInfo.FileVersion & vbCrLf strinfo = strinfo & "Internal Name: " & udtFileInfo.InternalName & vbCrLf strinfo = strinfo & "Legal Copyright: " & udtFileInfo.LegalCopyright & vbCrLf strinfo = strinfo & "Original FileName:" & udtFileInfo.OriginalFileName & vbCrLf strinfo = strinfo & "Product Name:" & udtFileInfo.ProductName & vbCrLf strinfo = strinfo & "Product Version: " & udtFileInfo.ProductVersion & vbCrLf " 这里就是dll的版本了 MsgBox strinfoEnd Sub窗体上只需要一个按钮就行了,直接复制进去就可以运行
2023-07-16 09:20:261