小编ImG*_*reg的帖子

从存储过程插入返回GUID

我有一些存储过程,我插入到我的SQL Server数据库中.我想返回此GUID以用于将来的插入,或者我发现它用作它.

我知道我可以在过程中生成GUID并从中返回它,但是我想避免在那里生成它,因为它具有主键(guid)行的默认值.我记得像SCOPE_IDENTITY这样的函数用于返回刚才使用的标识列,与此类似的GUID是什么?

感谢帮助!谢谢 :)

stored-procedures guid primary-key sql-server-2008

2
推荐指数
1
解决办法
6211
查看次数

SQL查询使用ID创建isDuplicate列

我有一个我正在使用的SQL Server 2005数据库.对于我正在使用的查询,我想添加一个自定义列,可以从任何数字开始,并根据行条目号递增.

例如,我从数字10开始.我的结果中的每一行都有一个递增的数字10,11,12等.

这是我将使用的SELECT语句的示例.

int customVal = 10;

SELECT 
    ID, customVal++ 
FROM myTable
Run Code Online (Sandbox Code Playgroud)

上面的格式显然是错误的,但它在概念上是我正在寻找的.

结果:

 ID     CustomColumn
 -------------------
 1         10
 2         11
 3         12
 4         13
Run Code Online (Sandbox Code Playgroud)

我该如何实现这种功能?

我找不到任何在结果中递增变量的引用.是这样的吗?

编辑:该customVal号码将从另一张表中提取.即可能SelectcustomVal变量做一个声明.您不能假设ID列将是任何可用的值.

CustomColumn会自动递增开始的customVal.

sql sql-server-2005

2
推荐指数
1
解决办法
60
查看次数

使用Catch从C#退出类

我正在寻找在我所拥有的ac#winforms类中处理错误的最佳方法.该应用程序的要点是它有一个数据分析器,可以分析统计数据和其他类似的东西.但是,我正在寻找处理ABORT的正确方法.

例如,我有一个名为Analyzer的类

namespace PHOEBE
{
    public class Analyzer
    {
        public Analyzer(){
            DoAnalysis();
            DoFurtherAnalysis();
        }

    public class DoAnalysis(){
        try{
            Convert.ToInt32("someNumber...."); //obviously fails..
        }
        catch{
          //ERROR OCCURRED, ABORT ALL ANALYSIS
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,当调用DoAnalysis()时,会发生错误.catch块将捕获异常.但是,当发生此捕获时,它将返回到构造函数并运行DoFurtherAnalysis().这是个问题.

我知道你可以从每个方法返回值,其中每个值表示某个结果(即1 =成功,0 =失败).但是,我调用的很多方法都使用了返回值.我还可以使用一个在发生错误时被标记的布尔值,并在从构造函数调用下一个方法之前检查该值,但每次检查此值都很烦人且重复.

我真的希望某种类似"我可以使用的中止机制".还有其他解决方法吗?对此有任何有趣的解决方法吗?

假设从表单调用此类.

c# try-catch winforms

1
推荐指数
2
解决办法
196
查看次数

游戏的平铺填充算法

背景:

我正在使用Javascript中基于图块的游戏,其中角色在地图周围自由移动(没有对角线 - 左/右/上/下)并且当他在地图上移动时填充图块.有三种图块类型 - 您填充的图块(蓝色),当前路径(红色)和空图块(黑色).也有在地图上移动的敌人(星星),但仅限于空白区域.目标是尽可能多地填充地图.

地图的大小约为40x40.地图外部周围有一个1瓦厚的边框,已经"填充"(蓝色).

我已经确定泛洪填充算法可以在需要时填充区域的区域.但是,我的问题如下:

问题陈述: 如果没有敌人,我想只填充地图的一部分.

我的问题: 我可以运行泛洪填充算法并在它到达敌人占用的区块时停止它 - 但是,这是最有效的方法(对于实时游戏)吗?
如果是,我如何以系统的方式确定从何处开始算法,因为有多个区域需要检查,并且角色不必在完美的直线上移动(可以向上/向下/向右/向左曲折) ,但不能对角移动).

图片示例1(图片说明更好):

注意:一旦到达另一个填充区域,红色区域将变为蓝色(填充).在下面的示例中,包含区域中没有敌人,因此该区域已填满.

FillExample1:INPROGRESS FillExample1:充满

图片示例2:

在第二个例子中,在包含区域内(和外部区域 - 未显示)中有一个敌​​人,所以只有线条被填满.

在此输入图像描述 在此输入图像描述

总结:这种填充的最佳方法是什么?洪水填充是确定是否填充的最佳选择 - 40x40是一个非常大的计算.如果是,我如何确定从哪个瓷砖开始?

javascript algorithm flood-fill tile

1
推荐指数
1
解决办法
702
查看次数

编辑后的 ​​DataGridView C# 编辑模式值格式化

我在 C# Winform 项目中有一个 datagridview。此 datagridview 用于将值插入到数据库中。每列最多匹配相应的 db 列。

其中一列是 DateTime 列。我想“验证”这个日期以确保它的格式正确。理想情况下,您会离开单元格,它会将其转换为我选择的日期时间格式。

我使用了一系列事件来尝试创建此功能,但一直遇到问题。我一直遇到的问题是,当事件触发时,该值尚未存储在单元格中。因此,当我做这样的事情时,例如:

private void Grid_Modify_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    if (Grid_Modify.Columns[e.ColumnIndex].Name == "DateTime")
    {
        Grid_Modify[e.ColumnIndex, e.RowIndex].Value = 
           Convert.ToDateTime(Grid_Modify[e.ColumnIndex, e.RowIndex].Value).ToString("YYYY-MM-DD hh:mm:ss");
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,它转换为日期时间的值是原始单元格值——而不是我刚刚输入的新值。我认为这是因为在更新单元格值之前触发了事件。

问题是:当我更改日期的值时,格式化日期的最佳方式是什么?

我尝试过的其他事件是:CellLeave、CellValueChanged、CellValidated 和 CellEndEdit。

注意: CellValueChanged 事件是唯一可以实际获取新单元格值的事件,但是,当我更改事件处理程序中的值时,它会陷入无限循环。

c# events datagridview event-handling winforms

0
推荐指数
1
解决办法
2167
查看次数