如何获取SQL server数据库的连接字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取SQL server数据库的连接字符串相关的知识,希望对你有一定的参考价值。
第一步:创建向导文件在桌面创建一个txt文件,并将文件后缀改成“.udl”。
第二步:选择“提供程序”tab页
双击新创建的“.udl”文件,进入后选择“提供程序”tab页,选择“Microsoft OLE DB Provider for SQL Server”。
第三步:设置“连接”
第二步后,选择“下一步”按钮,进入“连接”tab页,在“1.选择或输入服务器名称(E)”输入“.”,然后选择“2.输入登录服务器的信息”,在“第3”选择“在服务器上选择数据库”。
第四步:测试是否连接成功
在“连接”tab页,点击右下角“测试连接”按钮,测试是否连接成功。
第五步:获取连接字符串
当第四步“测试成功”后,用记事本打开“.udl”文件,获取连接字符串,如图。 参考技术A 步骤:
1、新建一个txt文本文档,然后把后缀名改为udl
2、打开 新建文本文档.udl ,并选择相应的数据库进行连接,之后点击 “测试连接”,成功之后关闭。
3、将后缀名改回txt,打开txt文本文档就可以看到已经创建好了数据库连接字符串了。
使用内部连接时如何在 sql server 中获取计数?
【中文标题】使用内部连接时如何在 sql server 中获取计数?【英文标题】:how to get count in sql server while using inner joins? 【发布时间】:2012-11-03 22:21:30 【问题描述】:我有以下查询:
SELECT
h.helpcontent, s.MenuID, s.pkSitePageId, s.PageAliasName,
s.SitePageName,s.pagepath
FROM
tblSiteRolePermissions p
INNER JOIN
tblSitePages s ON p.fkSitePageId = s.pkSitePageId
INNER JOIN
tblHelp h ON s.pkSitePageId=h.fkSitePageId
WHERE
(p.fkRoleId = 4 AND p.ViewOnly = 1)
ORDER BY
s.pkSitePageId
我想从tblSiteRolePermissions
获得计数。我已经尝试过Count
,但它抛出了一些错误,例如:
消息 8120,第 16 层,状态 1,第 1 行 列 'tblHelp.HelpContent' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
请帮助我,让我知道我错在哪里。
更新
这是我正在尝试的代码:
SELECT
count(p.pkRolePermissionId),
h.helpcontent, s.MenuID, s.pkSitePageId, s.PageAliasName,
s.SitePageName, s.pagepath
FROM
tblSiteRolePermissions p
INNER JOIN
tblSitePages s ON p.fkSitePageId = s.pkSitePageId
INNER JOIN
tblHelp h ON s.pkSitePageId = h.fkSitePageId
WHERE
(p.fkRoleId = 4 AND p.ViewOnly = 1)
ORDER BY
s.pkSitePageId
【问题讨论】:
你要数什么? @PaulAlanTaylor 请查看我的问题,我已经更新了它.. 错误信息与您的示例 SQL 语句不匹配。您的语句中既没有count()
(或任何其他聚合函数)也没有group by
。请向我们展示产生错误的真实陈述。
@a_horse_with_no_name 请立即查看
您想获取 all 行的计数,还是仅获取单个 fkSitePageId 的计数?还是其他一些属性组合?
【参考方案1】:
如果您使用的是聚合函数,则需要对 SELECT
语句中不在聚合中的剩余字段使用 GROUP BY
子句。类似这样:
SELECT count(p.pkRolePermissionId) CountRolePermission,
h.helpcontent,
s.MenuID,
s.pkSitePageId,
s.PageAliasName,
s.SitePageName,
s.pagepath
from tblSiteRolePermissions p
INNER JOIN tblSitePages s
ON p.fkSitePageId = s.pkSitePageId
inner join tblHelp h
on s.pkSitePageId=h.fkSitePageId
WHERE (p.fkRoleId =4 and p.ViewOnly=1)
GROUP BY h.helpcontent,
s.MenuID,
s.pkSitePageId,
s.PageAliasName,
s.SitePageName,
s.pagepath
ORDER BY s.pkSitePageId
如果你想要所有行的计数,那么你可以使用这样的东西:
SELECT NumRows.TotalCount,
h.helpcontent,
s.MenuID,
s.pkSitePageId,
s.PageAliasName,
s.SitePageName,
s.pagepath
from tblSiteRolePermissions p
INNER JOIN tblSitePages s
ON p.fkSitePageId = s.pkSitePageId
inner join tblHelp h
on s.pkSitePageId=h.fkSitePageId
cross join
(
SELECT count(*) TotalCount
from tblSiteRolePermissions p
INNER JOIN tblSitePages s
ON p.fkSitePageId = s.pkSitePageId
inner join tblHelp h
on s.pkSitePageId=h.fkSitePageId
WHERE (p.fkRoleId =4 and p.ViewOnly=1)
) NumRows
WHERE (p.fkRoleId =4 and p.ViewOnly=1)
ORDER BY s.pkSitePageId
或者您可以在查询中使用 CTE,类似于:
;with cte as
(
SELECT h.helpcontent,
s.MenuID,
s.pkSitePageId,
s.PageAliasName,
s.SitePageName,
s.pagepath
from tblSiteRolePermissions p
INNER JOIN tblSitePages s
ON p.fkSitePageId = s.pkSitePageId
inner join tblHelp h
on s.pkSitePageId=h.fkSitePageId
WHERE (p.fkRoleId =4 and p.ViewOnly=1)
)
select h.helpcontent,
s.MenuID,
s.pkSitePageId,
s.PageAliasName,
s.SitePageName,
s.pagepath,
(select count(*) from cte) as Total
from cte
【讨论】:
@Visions 这意味着您计算的数据由于GROUP BY
而不同。您到底想count()
做什么,这对于确定正确的语法很重要。【参考方案2】:
SELECT count(p.pkRolePermissionId),h.helpcontent, s.MenuID, s.pkSitePageId, s.PageAliasName,
s.SitePageName,s.pagepath
from tblSiteRolePermissions p
INNER JOIN tblSitePages s ON p.fkSitePageId = s.pkSitePageId
inner join tblHelp h on s.pkSitePageId=h.fkSitePageId
WHERE (p.fkRoleId =4 and p.ViewOnly=1)
GROUP BY h.helpcontent, s.MenuID, s.pkSitePageId, s.PageAliasName,
s.SitePageName,s.pagepath
ORDER BY s.pkSitePageId
【讨论】:
以上是关于如何获取SQL server数据库的连接字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL Server Express 获取连接字符串?
ASP.NET + SQL SERVER + JSON = 如何在 SQL Server 的两个连接表中获取数据并加载为 JSON?