我们假设有一个创建用户的操作.如果存在指定的电子邮件或用户名,则此操 如果失败,则需要确切知道原因.在我看来,有三种方法可以做到这一点,我想知道是否有明显的赢家.
所以,这是一个类用户:
class User
{
public string Email { get; set; }
public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有三种方法可以完成创建操作:
测试创建
if (UserExists(user)) act on user exists error;
if (UsernameExists(user)) act on username exists error;
CreateUser(user);
Run Code Online (Sandbox Code Playgroud)
UserExists和UsernameExists向db服务器发出请求以进行验证.在CreateUser中再次重复这些调用以确保正确使用API.如果验证失败,我会在两种情况下抛出ArgumentOutOfRangeException.因此性能受到了打击.
尝试 - 创建
enum CreateUserResultCode
{
Success,
UserAlreadyExists,
UsernameAlreadyExists
}
if (!TryCreate(user, out resultCode))
{
switch(resultCode)
{
case UserAlreadyExists: act on user exists error;
case UsernameAlreadyExists: act on username exists error;
}
}
Run Code Online (Sandbox Code Playgroud)
这种模式只进行一次验证,但我们采用所谓的错误代码,这不是一种好的做法.
创建,捕捉
try
{
CreateUser(user);
}
catch(UserExistsException)
{ …Run Code Online (Sandbox Code Playgroud) 有没有办法确定特定机器上次运行进程的时间?
我可以使用以下内容来确定某个进程是否正在运行,但如果该进程已停止,则该应用程序无法获取该进程.
Process[] process = Process.GetProcessesByName(processName, serverName);
Run Code Online (Sandbox Code Playgroud) Postgres noobie在这里.
我正在尝试将SQL Server存储过程转换为Postgres函数.目前无法弄清楚如何将此SQL行转换为Postgres.
SQL Server:
input: @name = null
SELECT *
FROM table
WHERE name = ISNULL(@name, name)
Run Code Online (Sandbox Code Playgroud)
Postgres的:
input: n = null
SELECT *
FROM table
WHERE name = COALESCE(n, name)
Run Code Online (Sandbox Code Playgroud)
我收到错误"列n不存在".如何在Postgres函数的select语句中引用参数?
更新:
Postgres函数的定义
CREATE OR REPLACE FUNCTION fn_name (n VARCHAR(32) = NULL, name OUT varchar(32), description OUT varchar(64))
RETURNS setof record
AS
$$
SELECT u.name
, u.description
FROM table_a u
WHERE u.name = COALESCE(n, u.name);
$$
LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud) 使用SQL Server 2005:
如何在查询中获取该季度和季度的数字日?
DECLARE @DATE DATETIME
SET @DATE = GETDATE()
SELECT DATEPART(dy, @DATE) AS DayOfYear
--, <something> AS DayOfQuarter
--, <something> AS DayOfMonth
, DATEPART(dw, @DATE) AS DayOfWeek
Run Code Online (Sandbox Code Playgroud)
提前致谢!
运行以下脚本时,我收到以下错误.我的目标是在Postgres中创建一个函数,将1作为bigint返回.请帮忙!
hashtagpostgresnoobie
错误:由于OUT参数,函数结果类型必须是bigint
CREATE OR REPLACE FUNCTION GetNumberOne(
OUT numberone bigint)
RETURNS SETOF record AS
$BODY$
SELECT CAST(1 AS BIGINT) AS "NUMBERONE";
$BODY$
LANGUAGE sql VOLATILE;
Run Code Online (Sandbox Code Playgroud) 我有98w行数据.当我想用pub_time对数据进行排序时,我发现了一件有趣的事情.
这是SQL:
select *
from t_p_blog_article_info t
order by t.pub_time desc
Run Code Online (Sandbox Code Playgroud)
它花了19s.
select *
from t_p_blog_article_info t
where t.pub_time > to_date( '1900-01-01 01:00:00', 'yyyy-mm-dd hh24:mi:ss ')
order by t.pub_time desc
Run Code Online (Sandbox Code Playgroud)
它的成本为0.2秒.
我想知道,为什么?
我正准备建立一个SVN存储库,并且想知道是否有人为repo结构提供了一个很好的例子.我目前在想:
开发
..应用
.... App1
......主干
......分支
......标签
..数据库
..第三方
虽然这种结构可能包含我们需要的一切,但我想让它更加颗粒化.有什么想法吗?
我正在使用C#中的算法来根据具有以下特征的输入字符串计算过去的DateTime:
该字符串包含一个整数,后跟"D","M"或"Y",例如"1D"或"90M".
输出将是DateTime.Now减去相应的天数,月数或年数.
我遇到的问题是,例如,如果我在Regex(D,M或Y)上切换输入字符串并从DateTime.Now中减去相应的TimeSpan,则新的TimeSpan()构造函数不接受数月或数年,只有几天
if (new Regex(@"[0-9]+D").IsMatch(value))
{
newDate = DateTime.Now - TimeSpan(Int32.Parse(value.Replace("D", "")), 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
如果输入字符串是几天,这个逻辑很好,但TimeSpan的构造函数不接受数月或数年,如果我假设每个月有30天,或者每年有365天,这将是非常不准确的.
有没有人想过如何实现这个算法?
谢谢!
我正在查看具有多个开发人员的多个命名约定的代码 - 一个真正的享受.其中包括匈牙利语("s_year","s_day")以及其他风格("yearS","dayS").
有谁知道这种风格叫什么?对于奖励积分,你知道它起源的地点/时间吗?
免责声明:奖励积分是假设的,仅根据要求授予.请提供5-12周的送货时间.
编辑:我想补充一点,在同一个文件中有第三种表示法("sYear","sDay").这是命名约定的帽子戏法!
为了举例,我有一个表ABCDEFG H的表.
我在表上创建了两个与最常用查询对应的索引.第一个是BCD和E列.第二个是BCDE和F.
使用这些列的查询被称为相同的次数,并且每个查询都针对索引进行了优化.
我的问题是 - 由于我在这个表上有多个索引,行大小非常大.我想删除其中一个索引,但无法决定哪一个.
我的问题是 - 如果我删除第一个索引(BCDE),使用这些列的查询是否仍然会被(BCDEF)上的索引优化?
sql ×5
c# ×3
postgresql ×2
sql-server ×2
casting ×1
datestamp ×1
datetime ×1
indexing ×1
oracle ×1
performance ×1
process ×1
repository ×1
svn ×1
system ×1
timespan ×1