小编Nil*_*nde的帖子

DbCommand和参数化SQL,ORACLE与SQL Server

我有一个应用程序,除其他外,将各种数据存储到数据库中.数据库可能是ORACLE或SQL Server.SQL是根据执行期间获取的配置和值动态创建的.

通过使用DbProviderFactory,我的db方法可以使用ORACLE或SQL Server,而无需为任何数据库编写自定义代码,除了一件事; 参数/绑定变量.对于ORACLE我需要使用":ParameterName"而对于SQL Server我需要使用"@ParameterName".有没有办法让这个通用?

示例代码:

public class DbOperations
{
    private DbProviderFactory m_factory;
    private DbConnection m_CN;

    ...

    private void InsertToDb(ValueType[] values, ColumnType[] columns)
    {     
        DbCommand Cmd = m_factory.CreateCommand();
        Cmd.Connection = m_CN;

        StringBuilder sql = new StringBuilder();
        sql.Append("INSERT INTO ");
        sql.Append(DestinationTable);
        sql.Append(" (");

        for (int i = 0; i < columns.Length; i++)
        {
            sql.Append(columns[i].ColumnName);
            if (i < columns.Length - 1) 
            sql.Append(", ");
        }
        sql.Append(") VALUES (");

        for (int i = 0; i < values.Length; i++)
        { …
Run Code Online (Sandbox Code Playgroud)

c# sql-server oracle ado.net

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

如何在Windows窗体应用程序中获取应用程序物理路径

如何在Windows窗体中获取应用程序路径,我使用了波纹管代码,但它说的是"找不到方法"

Application.ExecutablePath;
Application.StartupPath;
Run Code Online (Sandbox Code Playgroud)

请建议我,我缺少任何命名空间?

提前致谢

c# winforms

7
推荐指数
2
解决办法
4万
查看次数

在FSharp中从函数返回函数时难以理解类型推断

我在我的F#应用程序中使用log4net,并希望通过创建一些函数来使日志记录更加惯用F#.

对于警告,我创建了以下功能:

let log = log4net.LogManager.GetLogger("foo")
let warn format = Printf.ksprintf log.Warn format
Run Code Online (Sandbox Code Playgroud)

这很好用,我可以这样做:

warn "This is a warning"
// and
warn "The value of my string is %s" someString
Run Code Online (Sandbox Code Playgroud)

但是我想让它更通用,并且可以传入我想要的记录器.因此,我将该函数包装在另一个可以将ILog作为参数的函数中:

let getWarn (logger: log4net.ILog) =
    fun format -> Printf.ksprintf logger.Warn format
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

let getWarn (logger: log4net.ILog) format =
    Printf.ksprintf logger.Warn format
Run Code Online (Sandbox Code Playgroud)

当我现在使用它时:

let warn = getWarn log4net.LogManager.GetLogger("bar")
warn "This is a warning"
Run Code Online (Sandbox Code Playgroud)

这有效,但是当我这样做时:

warn "The value of my string is %s" someString
Run Code Online (Sandbox Code Playgroud)

我收到一个编译器错误说"The value is not a function …

f#

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

标签 统计

c# ×2

ado.net ×1

f# ×1

oracle ×1

sql-server ×1

winforms ×1