小编Mik*_*fer的帖子

推荐的参数顺序

我正在研究遗留软件系统,我的任务是将一些旧的COM组件迁移到.NET 3.5.COM组件最初在MTS中托管,然后在组件服务中托管.在.NET端口中,我们使用ADO.NET事务处理事务,因此方法签名有所改变.

我面临的困境是参数顺序.每种方法都要求您传递SqlConnection或SqlTransaction(取决于方法是否更新数据库).当然,有些方法可以用不同的参数调用.例如:

Keyword.Load(string description, SqlTransaction transaction)
Run Code Online (Sandbox Code Playgroud)

- 要么 -

Keyword.Load(string description, string tag, SqlTransaction transaction)
Run Code Online (Sandbox Code Playgroud)

现在,框架中提供多个重载的大多数方法都如下所示:

A(int arg1)
A(int arg1, string arg2)
A(int arg1, string arg2, DateTime arg3)
Run Code Online (Sandbox Code Playgroud)

值得注意的是,尽管存在过载,参数顺序仍然一致.但是,我真的想强调用户传递连接或事务的要求.通常,这些是指定的最后一个参数.但在我看来,放置它们的最佳位置是参数0:

A(SqlTransaction transaction)
A(SqlTransaction transaction, int arg1)
Run Code Online (Sandbox Code Playgroud)

不幸的是,在这种情况下,在过载的声明中既没有连接也没有事务,并为您创建一个:

// These overloads create a connection, open it, and start a new transaction.
A()
A(int arg1)
A(int arg1, string arg2)
A(int arg1, string arg2)
A(int arg1, string arg2, DateTime arg3)

// These overloads require that the transaction be passed in, so that the …
Run Code Online (Sandbox Code Playgroud)

.net parameters coding-style overloading

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

Oracle 9i:Synonymed表不存在?

我创建了一个包,其中包含我计划从单独的应用程序调用的存储过程.存储过程将返回架构中所有视图和表的排序列表.为此,它对DBA_TABLES和DBA_VIEWS同义词执行简单选择,如下所示:

CREATE OR REPLACE
PACKAGE BODY TITAN_ENTITY AS

  PROCEDURE GETSCHEMAOBJECTS (RESULTS IN OUT T_CURSOR)
  IS
    V_CURSOR T_CURSOR;
  BEGIN
    OPEN V_CURSOR FOR
       SELECT 'T' OBJECTTYPE, TABLE_NAME OBJECTNAME 
          FROM DBA_TABLES 
          WHERE OWNER = 'SONAR5'
       UNION ALL
       SELECT 'V' OBJECTTYPE, VIEW_NAME OBJECTNAME 
         FROM DBA_VIEWS 
         WHERE OWNER = 'SONAR5'
       ORDER BY OBJECTNAME;
    RESULTS := V_CURSOR;      

  END GETSCHEMAOBJECTS;

END TITAN_ENTITY;
Run Code Online (Sandbox Code Playgroud)

我已经确认有问题的同义词存在,并且是公开的:

CREATE PUBLIC SYNONYM "DBA_TABLES" FOR "SYS"."DBA_TABLES"
CREATE PUBLIC SYNONYM "DBA_VIEWS" FOR "SYS"."DBA_VIEWS"
Run Code Online (Sandbox Code Playgroud)

我的理解是,因为它们是公开的,所以我不需要任何进一步的权限来获取它们.如果这种理解不正确,我希望有人能够理解这个概念并指出我更准确的数据.

现在这是我的问题:我可以在Oracle SQL Developer中打开一个工作表,并从这些表中选择就好了.我得到了有意义的数据(567行,事实上).但是当我尝试执行存储过程时,Oracle会抱怨编译错误,如下所示:

Error(9,8): PL/SQL: SQL Statement ignored
Error(10,16): PL/SQL: ORA-00942: …
Run Code Online (Sandbox Code Playgroud)

oracle package synonym ora-00942

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

您何时选择不使用身份/自动编号字段作为主键?

我不相信Silver Bullet,但我真的喜欢使用序列或自动编号标识列作为数据库表的主键列.它们是唯一的,它们索引很好,我不必担心空值.

另一方面,在某些情况下,当表中的其他唯一列可以用于相同目的时,它们似乎是多余的.比如说,您正在构建一个将9位邮政编码映射到城市区域的表格.邮政编码字段也可以正常工作(前提是您可以保证数据格式且不重复值).

要点:我和我们任何人的经历都是有限的.还有哪些真实的例子让人们选择使用自动编号列作为表的主键,为什么?

这对我来说是一种"开阔视野"的东西,我希望从那些曾经使用过多数据库并有令人信服的理由选择其他人的人那里学到一点.

database-design identity-column

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

"无法解析符号选择"尝试将LINQ与DataRowCollection一起使用

我正在尝试使用LINQ迭代DataTable中的行,并从列值中实例化对象.棘手的代码如下所示.

问题是代码甚至不会编译.恶意错误消息是"无法解析符号选择".

我很满意DataRowCollection实现IEnumerable(它从System.Data.InternalDataCollectionBase获取),所以你会认为以下没有问题(显然,我错了).

我在我的项目中包含了System.Linq System.Data和System.Data.SqlClient.它还具有所有必要的参考.我之前在整个应用程序中一直使用LINQ(主要是POCO和XDocuemnts列表),这是我第一次看到这个特定的消息.

关于如何解决它的任何建议?

using (var command = connection.CreateCommand())
{
    command.CommandText = "dbo.sp_pTicklerContacts_sel_W_ContactRole_by_ComKey";
    command.CommandTimeout = 120;
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@iComKey", SqlDbType.Int).Value = companyKey;

    using (var adapter = new SqlDataAdapter(command))
    {
        var dataset = new DataSet();
        adapter.Fill(dataset);
        if (dataset.TableCount() > 0 && dataset.Tables[0].Rows.Count > 0)
        {
            return (from row in dataset.Tables[0].Rows
                    select new TicklerContact
                               {
                                   CompanyKey = row.ToInt32("iTicklerContact"),
                                   Contact = row.ToString("ccontact"),
                                   ContactKey = row.ToInt32("iconkey"),
                                   TicklerContactKey = row.ToInt32("iTicklerContactKey"),
                                   Role = row.ToString("contactrole"),
                                   Exists = row.ToBool("contactexists")
                                 }).ToList();

        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net linq

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

Eclipse插件 - 无法解析Swing类引用

(免责声明:以下两种情况都不正确:(1)Java是我的专长,(2)我是插件开发的专家.)

我的Eclipse插件项目包含5个插件.其中2个编译得很好.不包括在类依赖的3 org.eclipse.swt.widgetsorg.eclipse.swt.graphics包.(非常烦人的)编译时错误消息是:

The type org.eclipse.swt.widgets.Control cannot be resolved. 
It is indirectly referenced from required .class files.
Run Code Online (Sandbox Code Playgroud)

现在,我用一把细齿梳子在这个工作区上.我已检查并重新检查以下内容:

  • 类路径.校验!(适当的JRE和JDK在Windows PATH上.)
  • 依赖.校验!(包括所有图书馆.)
  • 构建路径.校验!(使用正确的JRE,导入所有必需的库,构建顺序是正确的.)
  • 进口.校验!(是的.导入正确的库,如对话框中所示.)
  • 的Manifest.MF.校验!(仔细检查清单文件以确保路径正确.所有三个项目都引用同一个JRE中的同一文件.)
  • plugin.xml中.校验!(是的,文件很好.)
  • .ClassPath文件.校验!(这里也没问题.classpath文件都很好.)
  • build.properties文件.校验!(这里也没有惊喜.)

我用谷歌搜索并堆叠溢出,直到我的眼睛流血.没有一个典型的建议似乎有所帮助.

但我确信,通常的事实将证明是这样的.(在所有条件相同的情况下,答案通常都是简单,愚蠢,而且非常明显.)

有人可以建议一些我尚未看过的东西吗?我非常愿意提供您可能需要的任何信息.

PS我可能会注意到,有办法太多的地方寻找到配置插件的依赖?伟大的googly moogly.

java eclipse plugins

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

Excel TFS 加载项连接到 TFS 时崩溃

我们经常使用Excel对TFS中的数据进行批量更新。直到最近,Team Foundation 插件都运行良好。然而,它已经开始在几个方面失败:

  • 它将连接到服务器,但尝试连接到任何项目都会导致 Excel 崩溃,并在 Windows 应用程序事件日志中生成 Watson 报告。

  • 如果我重新启动 Excel,它会报告填充程序和加载项都遇到问题,并提出禁用它。如果我不禁用它,我仍然无法连接到项目。

  • 最终,该加载项完全拒绝加载,直到我使用“选项”对话框手动将 COM 加载项添加回应用程序中。这样做会产生相同的结果(Excel 在尝试加载项目时崩溃)。

我已采取以下步骤来尝试解决该问题:

  1. 删除并完全重新安装 Office。
  2. 重新注册加载项组件。
  3. 卸载并重新安装 Team Foundation Office 集成。

这些都没有解决该问题。

有谁知道如何解决这个问题?

PS如果这不是这个问题的正确“堆栈”,请指出我在交易所上正确的“堆栈”。谢谢。

excel tfs add-in office365

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

未找到类型"DBNull"上的公共成员"元素"

我们有一个ActiveX组件,它通过SHDocVw在Internet Explorer窗口中显示一个Web页面.在DocumentComplete事件处理程序中,我们尝试从页面上的一个控件中检索值.我们知道控件在页面上(通过Fiddler跟踪可见).

在这一点上,事情变得不稳定.我们在运行时收到以下错误消息:

Error Message:  
  Public member 'elements' on type 'DBNull' not found.
Error Routine Location:  
   at Microsoft.VisualBasic.CompilerServices.Symbols.Container.GetMembers(String& MemberName, Boolean ReportErrors)
   at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
   at Foo.AddinModule.m_internetExplorer_DownloadComplete(Object pDisp, Object& url)
Error Source:  
  Microsoft.VisualBasic
Error Site Location:  
  System.Reflection.MemberInfo[] GetMembers(System.String ByRef, Boolean)
Run Code Online (Sandbox Code Playgroud)

令人讨厌的代码行是这样的:

Me.IEInstance.Document.forms("frmRedirect").elements("redirectData").Value = outlookXML.OuterXml
Run Code Online (Sandbox Code Playgroud)

所以,基本上,Me.IEInstance.Document.forms("frmRedirect")正在评估DBNull.

我们已经消除了区分大小写的问题.尝试在页面内移动控件,并验证HTML格式正确.我不知道为什么会这样.下面是生成的HTML的示例.

任何人都可以提出这个问题的原因和可能的解决方案吗?我现在正在接受任何和所有的建议.

HTML示例

<form id='frmRedirect' name='frmRedirect' action='pw_outlook/choosecontacts.aspx' method='POST'>
    <input type='hidden' name='redirectData'>
</form>
Run Code Online (Sandbox Code Playgroud)

更新2012年3月28日

我们已经确定代码在某些配置下工作正常.然后,神秘的是,如果您更改代码,它将成功为一些用户,如下所示: …

.net internet-explorer activex

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

Oracle 9i:据说缺少右括号

我有一个用Oracle 9i(版本9.2.0.4.0)编写的简单函数来模拟内联IF.对于那些感兴趣的人,这里是代码:

create or replace
FUNCTION IIF  
   (testExpression NUMBER,
    trueResult NUMBER,
    falseResult NUMBER)
RETURN NUMBER   
AS
BEGIN
   /*
      A simple in-line IF function for use with SQL queries. If the test
      expression evaluates to any non-zero value, it is considered to be 
      true, and the trueResult is returned. Otherwise, falseResult is
      returned.
   */   
   IF (testExpression is null) or (testExpression = 0) THEN
      return falseResult;
   ELSE
      return trueResult;
   END IF;
END IIF;
Run Code Online (Sandbox Code Playgroud)

这不是火箭科学.现在,这是一个很大的谜团:如果我执行以下SQL语句,一切都很好,并且完全符合我的预期:

SELECT IIF(1, 'true', 'false') FROM DUAL;
SELECT IIF(0, …
Run Code Online (Sandbox Code Playgroud)

oracle function ora-00907

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

如何记录 Main 方法?

好的,所以我有一个 .NET 控制台应用程序,它的 Main 方法包含在 Program 类中。你知道,通常的:

class Program
{
    static void Main(string[] args)
    {
        // Do something spectactular
    }
}
Run Code Online (Sandbox Code Playgroud)

自从我开始如此严格地使用 StyleCop 和 FxCop 以来,我对确保所有内容都正确记录变得有点挑剔。

然后它击中了我。我完全不知道如何正确记录 Program 和 Program.Main。

我想,从长远来看,您可以采用以下方法:

/// <summary>
///     Encapsulates the application's main entry point.
/// </summary>
class Program
{
    /// <summary>
    ///     The application's main entry point.
    /// </summary>
    static void Main(string[] args)
    {
        // Do something spectactular
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎严重不足(尽管我的 Main 例程总是委托给其他类来完成这项工作)。

你们是如何记录这些事情的?有推荐或标准吗?

documentation coding-style

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

Javascript - 无法调用null的方法'split'

我在我的网站上发生了一个javascript错误,我很确定我知道为什么,但我不知道如何解决它!

这是错误:

Uncaught TypeError: Cannot call method 'split' of null
Run Code Online (Sandbox Code Playgroud)

这是我的JS代码:

$(function(e) {
    if (document.cookie.indexOf("login") >= 0) {
        $("a#loggedInUser").html( $.cookie("login").split("|")[0] );
    }
});
Run Code Online (Sandbox Code Playgroud)

我只是想显示存储在"登录"cookie中的用户名.现在,我很确定错误是因为返回的值有时不是字符串,然后它没有split方法,因此它会导致此错误.

我该如何解决这个问题?有任何想法吗?

谢谢!

javascript cookies jquery split

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