小编Joh*_*dom的帖子

执行Insert命令并在Sql中返回插入的Id

嗨我在MVC4中使用C#将一些值插入到sql表中.实际上我想插入值并返回最后插入记录的"ID".我使用以下代码.

public class MemberBasicData
{
    public int Id { get; set; }
    public string Mem_NA { get; set; }
    public string Mem_Occ { get; set; }     
}
Run Code Online (Sandbox Code Playgroud)

插入时,ID在数据库中自动递增.

public int CreateNewMember(string Mem_NA, string Mem_Occ )
{
    using (SqlConnection con=new SqlConnection(Config.ConnectionString))
    {
        using(SqlCommand cmd=new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ)",con))
        {
            cmd.Parameters.AddWithValue("@na", Mem_NA);
            cmd.Parameters.AddWithValue("@occ", Mem_Occ);
            con.Open();

            int modified = cmd.ExecuteNonQuery();

            if (con.State == System.Data.ConnectionState.Open) con.Close();
                return modified;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道ExecuteNonQuery表示影响行的数字.而不是我使用

int modified = (int)cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

但不行.请帮我解决这个问题.是否有任何代码,如cmd.ExecuteInsertAndGetID()(不使用我的代码).

c# sql sql-server asp.net-mvc-4

94
推荐指数
3
解决办法
23万
查看次数

在C#中编辑文本文件的特定行

我有两个文本文件,Source.txt和Target.txt.源将永远不会被修改并包含N行文本.所以,我想删除Target.txt中的特定文本行,并用Source.txt中的特定文本行替换,我知道我需要的行数,实际上是行号2,两个文件.

我有这样的事情:

string line = string.Empty;
int line_number = 1;
int line_to_edit = 2;

using (StreamReader reader = new StreamReader(@"C:\source.xml"))
{
    using (StreamWriter writer = new StreamWriter(@"C:\target.xml"))
    {
        while ((line = reader.ReadLine()) != null)
        {
            if (line_number == line_to_edit)
            {
                writer.WriteLine(line);
            } 

            line_number++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我打开Writer时,目标文件被擦除,它会写入行,但是,当打开时,目标文件只包含复制的行,其余的则丢失.

我能做什么?

c# stream filestream

29
推荐指数
2
解决办法
11万
查看次数

BASH - 仅打印路径中最深的目录

我需要一些帮助.....

在我的.bashrc文件中,我有一个非常有用的功能(它可能有点粗糙和准备,有点hacky,但它有效!)它读取输入文件,并在每个上使用'tree'函数输入行来创建目录树.然后将此树打印到输出文件(以及文件夹的大小)中.

multitree()
{
    while read cheese
    do
        pushd . > /dev/null
        pushd $cheese > /dev/null
        echo -e "$cheese \n\n" >> ~/Desktop/$2.txt
        tree -idf . >> ~/Desktop/$2.txt
        echo -e "\n\n\n" >> ~/Desktop/$2.txt
        du -sh --si >> ~/Desktop/$2.txt
        echo -e "\n\n\n\n\n\n\n" >> ~/Desktop/$2.txt
        popd > /dev/null
    done < $1
        cat ~/done
}
Run Code Online (Sandbox Code Playgroud)

这可以节省时间,并输出如下所示的代码段:

./foo
./foo/bar
./foo/bar/1
./foo/bar/1/2
Run Code Online (Sandbox Code Playgroud)

等等....

然而,我需要做的第一个(也是最繁琐的)是删除所有条目,只留下最深的文件夹路径(使用上面的例子,它将简化为./foo/bar/1/2)

有没有办法在树函数之前/之后处理文件只打印最深层次?

我知道像python这样的东西可能做得更好,但我的问题是我从未使用过python我不确定工作系统会让我运行python ......他们让我们修改自己的.bashrc所以我是不要太担心!

先谢谢你们!!!!

欧文.

linux bash tree

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

函数指针从std :: function :: target <>()和普通函数指针之间的区别是什么?

以下代码是从APUE复制的信号实现,稍作修改

namespace
{
    using signal_handler = void (*)(int);
    signal_handler signal(sigset_t sig, signal_handler);
}

Signal::signal_handler Signal::signal(sigset_t sig, void (*handler)(int)) 
{
    struct sigaction newAction, oldAction;

    sigemptyset(&newAction.sa_mask);
    newAction.sa_flags = 0;
    newAction.sa_handler = handler;

    if (sig == SIGALRM) 
    {
#ifdef SA_INTERRUPT
        newAction.sa_flags |= SA_INTERRUPT;
#endif
    }
    else 
    {
        newAction.sa_flags |= SA_RESTART;
    }

    if (sigaction(sig, &newAction, &oldAction) < 0)
        throw std::runtime_error("signal error: cannot set a new signal handler.")

    return oldAction.sa_handler;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在我的测试中运行正常,但我想让它更像C++代码,所以我将signal_handler别名更改为

using signal_handler = std::function<void (int)>;
Run Code Online (Sandbox Code Playgroud)

我也用

newAction.sa_handler = handler.target<void (int)>();
Run Code Online (Sandbox Code Playgroud)

取代 …

c++ xcode

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

XMLTextReader不读取元素内容

static void ReadXml()
{
    string a= null;
    double b= 0;
    double c= 0;
    XmlReader xmlReader = new XmlReader("Testxml.xml");
    xmlReader.
    using (xmlReader)
    {
        if (xmlReader != null)
        { 
            while (xmlReader.Read())
            {
                if (xmlReader.NodeType == XmlNodeType.Element)
                {
                    switch (xmlReader.Name)
                    {
                        case "a":
                            a = xmlReader.ReadElementContentAsString();

                            break;
                        case "b":
                            b = double.Parse(xmlReader.ReadElementContentAsString());

                            break;
                        case "c":
                            c = double.Parse(xmlReader.ReadElementContentAsString());

                            break;
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

TestXML内容:

<a><b>26a83f12c782</b><c>128</c><d>12</d></a>
Run Code Online (Sandbox Code Playgroud)

情况b从未被击中.但是如果我在b的结束元素之后添加一个空格,则会触发案例b.现在如何在不更改xml文件的情况下使其工作?

c# xmltextreader

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

如何在 C# 中使用 GZipStream 压缩多个文件

我使用数据表创建了多个 csv 文件,并希望将所有这些文件压缩到一个 zip 文件中。这就是我动态地做的一切。

我尝试了以下代码

List<string> filestream = GenerateCSVfiles(dataSets);

//Generate CSV files
public List<string> GenerateCSVfiles(List<DataSet> dataSets)
{
    List<string> filestream = new List<string>();
    StringBuilder result = null;

    foreach (DataSet dataSet in dataSets)
    {
        result = new StringBuilder();

        System.Data.DataTable dataTable = dataSet.Tables[0];

        foreach (DataColumn colm in dataTable.Columns)
        {
            result.Append(colm.ColumnName+",");
        }

        result.Append("\n");

        //create csv file
        foreach (DataRow row in dataTable.Rows)
        {
            for (int i = 0; i < dataTable.Columns.Count; i++)
            {
                result.Append(row[i].ToString());
                result.Append(i == dataTable.Columns.Count - 1 ? "\n" : ",");
            } …
Run Code Online (Sandbox Code Playgroud)

c# csv asp.net-mvc gzip filestream

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

如果许多vector <T>被构造和销毁,自定义分配器是否会提高性能?

在下面的代码中,每10个整数的许多向量构造有60%的几率,或者现有的向量被删除,有40%的几率.因此,会有很多调用new/malloc和delete.由于所有这些载体类型vector<int>,可以在这里自定义分配器的帮助,以减少电话newdelete,从而提高性能?这个想法是删除的矢量的空间可以由新构造的空间重用.这样的分配器怎么样?

注意:这个问题是关于分配器,它减少了对new和的调用delete.

#include <iostream>
#include <vector>
#include <random>

using namespace std;

int main() 
{
    // Random generator and distribution
    mt19937 gen(123456);
    uniform_real_distribution<> dis01(0., 1.);

    // Make or delete 10E6 vectors.
    vector< vector<int> > v; //the inner vectors will make many calls to new and delete

    v.reserve(10E5); //assume some size.

    for(int i=0; i<10E6; ++i)
    {
        if(dis01(gen)<0.6) // if true: make new sub-vector
        {
            v.emplace_back(); //new sub-vector
            v.back().reserve(10);

            for(int k=0; k<10; ++k) …
Run Code Online (Sandbox Code Playgroud)

c++ performance vector allocator

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

表变量的SQL SERVER NON-Clustered Index?

我们如何在表变量上创建非聚集索引?

创建表@risk(rskid int)

在@risk上创建非聚簇索引r_rskid_nc(rskid)

这是行不通的??


我的过程

我怎样才能优化它?

ALTER PROCEDURE [dbo].[SPR_LV004](@TopN INT,@ LoggedUserId INT,@ Entity VARCHAR(255),@ OpModel VARCHAR(255),@ RiskCat VARCHAR(255),@ RsdlInh VARCHAR(1),@ DisplayAction VARCHAR( 1),@ LastAssDate DATETIME)AS

  SET NOCOUNT ON

DECLARE @Thisdate DATETIME

SET @ThisDate = GETDATE()

DECLARE @MainFilter  TABLE(
            fcaName VARCHAR(100)
           ,fctName VARCHAR(100)
           ,rskId INT PRIMARY KEY CLUSTERED )

DECLARE @Tgt  TABLE(rasRiskId INT
           ,rasId INT
           ,RAMName VARCHAR(100)
           ,RAMColour INT
           ,RAMImpDesc VARCHAR(100)
           ,RAMLikDesc VARCHAR(100)
           ,RAMImpScore INT
           ,RAMLikScore INT
            ,LastScore INT
            ,AnnualExposure NUMERIC(15, 0)
            ,Currency VARCHAR(9)
            ,OverallExp NUMERIC(15,0)
            ,Frequency INT
            ,LastAssessmentDate DATETIME) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005

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

用于从组合框中获取所选值的JavaScript代码

任何人都可以给我一个示例代码,从现有的组合框中获取所选值吗?

我有这个代码,但它没有做任何事情:

function check () 
{
    var e = document.getElementById("ticket_category_clone");
    var str = e.options[e.selectedIndex].text;

    alert(str);

    if (str==="Hardware")
    {
        SPICEWORKS.utils.addStyle('#ticket_c_hardware_clone{display: none !important;}');
    }       
}

SPICEWORKS.app.helpdesk.ready(check);?
Run Code Online (Sandbox Code Playgroud)

下面是代码的img

和代码

<select id="ticket_category_clone" name="ticket[category]" hdpp="ticket_category">
<option value=""></option><option value="Hardware">Hardware</option>
<option value="Software">Software</option>
<option value="Rede" selected="selected">Rede</option>
<option value="Pedidos">Pedidos</option>
<option value="Formação/Dúvida">Formação/Dúvida</option>
<option value="Outro">Outro</option><option value="#edit_categories#">Edit Categories...</option></select>
Run Code Online (Sandbox Code Playgroud)

我希望它找到一种方法来获得组合框的选定值

javascript combobox

5
推荐指数
2
解决办法
12万
查看次数

如何处理 System.Windows.Media.MediaPlayer

问题很简单,可以概括为:

我怎样才能让这个while循环退出?

System.Windows.Media.MediaPlayer player = new System.Windows.Media.MediaPlayer();
WeakReference test = new WeakReference(player);

player.Close();
player = null;

while (test.IsAlive && test.Target != null)
{
    System.GC.Collect();
}
Run Code Online (Sandbox Code Playgroud)

我搜索了文档,发现没有办法处理这个对象,while 循环永远不会退出。

c#

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