标签: executenonquery

一个存储过程在另一个存储过程中的行数

我有各种存储过程。我需要一个存储过程来执行一个存储过程,然后仅返回行数(被调用过程返回的行数),并且需要用c#代码接收它。

最好的方法是什么?

情况:我有各种从c#代码调用的存储过程。现在出于另一个目的,我需要知道某个过程返回的行数(我不希望返回的行,我只需要行数)。我无法更改存储过程本身,因为我的许多C#代码都在使用它们,因此如果更改存储过程,事情可能会中断。这就是为什么我锁定一个过程,该过程将接受输入并(动态地)执行一个过程并返回行数,而不返回结果或行数。

我可以采取存储过程字符串并像执行

EXEC ('StoredProcedure @Keyword = ''' + @Key + '''')
Run Code Online (Sandbox Code Playgroud)

我在每个可能返回的行中都有一个ID作为列。我可以存储ID并对其进行计数,但是我不知道这是否是最好的主意。

我的数据库很大。我可以在c#中使用executenonquery(),但是当我用它执行任何存储过程时,它都返回-1。最好的方法是什么。谢谢。

c# sql stored-procedures rowcount executenonquery

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

OracleCommand命令,ExecuteNonQuery问题

我必须清除oracle数据库中的某些表,但是当我遇到运行以下代码的问题时

public static void ClearDataTables(IList<string> tableNames)
        {
            string connectionString = "CONNECTIONSTRING";
            using (OracleConnection connection = new OracleConnection())
            {
                connection.ConnectionString = connectionString;
                connection.Open();
                foreach (string table in tableNames)
                {
                    OracleCommand command = connection.CreateCommand();
                    string sql = String.Format("DELETE FROM TOA_REPORTING.{0}", table);
                    command.CommandText = sql;
                    command.ExecuteNonQuery();
                }
                connection.Close();
            }
        }
Run Code Online (Sandbox Code Playgroud)

我用这个列表调用这个方法

ClearDataTables(new List<string> { "GROUP_DEFINITION", "GROUP_REPORT_EMAIL_LIST", "GROUP_EQUIPMENT_GROUP_STN_XREF"});
Run Code Online (Sandbox Code Playgroud)

它可以很好地运行前两个表,但是在第三个表上,它会卡住,应用程序会永远运行...

有趣的是,当我切换"GROUP_REPORT_EMAIL_LIST"和"GROUP_EQUIPMENT_GROUP_STN_XREF"时,应用程序在命中第二个表名后永远运行.

总而言之,当函数命中"GROUP_EQUIPMENT_GROUP_STN_XREF"时,该函数将永远运行.我已经验证了生成的SQL是通过在toad上测试它来实现的.

其他人遇到过这个问题?

编辑 - 前两个表确实在运行时被清除.

string connectionString = "CONNECTIONSTRING";
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                connection.Open();
                OracleCommand command = connection.CreateCommand();
                OracleTransaction trans …
Run Code Online (Sandbox Code Playgroud)

c# sql oracle10g oraclecommand executenonquery

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

VB.NET SQL Server插入 - ExecuteNonQuery:尚未初始化Connection属性

在表单加载事件中,我连接到SQL Server数据库:

Private Sub AddBook_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            myConnection = New SqlConnection("server=.\SQLEXPRESS;uid=sa;pwd=123;database=CIEDC")
            myConnection.Open()

End Sub
Run Code Online (Sandbox Code Playgroud)

在Insert事件中,我使用以下代码:

Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAdd.Click
            Try
                myConnection.Open()
                myCommand = New SqlCommand("INSERT INTO tblBook(BookCode, BookTitle, Author, PublishingYear, Price, EnterDate, CatID, RackID, Amount) VALUES('" & txtBookCode.Text & "','" & txtTitle.Text & "','" & txtAuthor.Text & "','" & txtPublishYear.Text & "','" & txtPrice.Text & "', #" & txtEnterDate.Text & "#, " & txtCategory.Text & …
Run Code Online (Sandbox Code Playgroud)

sql vb.net executenonquery

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

ExecutenonQuery无效

我存储过程如下:

ALTER PROC pr_Update_Users_Nomination
(
      @UserID AS VARCHAR(100),  
      @Nominated AS BIT
)
AS

UPDATE User
SET isNominated = @Nominated
WHERE 
EMPID = @UserID;
Run Code Online (Sandbox Code Playgroud)

我想从c#代码调用这个过程:下面是我正在尝试的代码:

void OpenConnection()
{
string Nominated = "False";
    //Connection String
        string sConnString = System.Configuration.ConfigurationManager.ConnectionStrings["ConString1"].ConnectionString;
        SqlConnection mySqlCon = new SqlConnection(sConnString);
        SqlCommand mySqlCom = mySqlCon.CreateCommand();

        //Call the stored proc and provide in parameters
        mySqlCom.CommandText = "EXECUTE pr_Update @UserID @Nominated";
        mySqlCom.Parameters.Add("@UserID", SqlDbType.VarChar, 20).Value = UserID;
        mySqlCom.Parameters.Add("@Nominated", SqlDbType.Bit).Value = Nominated;

        mySqlCon.Open();
        mySqlCom.ExecuteNonQuery();
        mySqlCon.Close();
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说

Incorrect Syntax near @Nominated
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server-2008 executenonquery

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

如何从Database.ExecuteNonQuery获取输出?

我想使用Database.ExecuteNonQuery或类似的东西来执行sql脚本,然后捕获输出.

例如:xxx表创建

我的剧本:

        strArray = Regex.Split(streamReader.ReadToEnd(), "\r\nGO");
        if (connection.State == ConnectionState.Open)
        {
            System.Data.SqlClient.SqlCommand cmd;
            foreach (string sql in strArray)
            {
                cmd = new System.Data.SqlClient.SqlCommand(sql);
                cmd.Connection = connection;
                Console.WriteLine(sql);
                Console.WriteLine(cmd.ExecuteNonQuery().ToString());
            }
        }
Run Code Online (Sandbox Code Playgroud)

c# command capture executenonquery output

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

ExecuteNonQuery:尚未初始化Connection属性

我以前在这里问过这个问题,但从未使用过Enterprise Library.我之前使用过如下代码,它运行正常.这次有什么问题?我在最后一行收到错误:

    Database db = new SqlDatabase(MyConfiguration.Current.ConnectionString);
    DbCommand cmd = db.GetStoredProcCommand("AddWorkListItem");

    db.AddInParameter(cmd, "@PartNumber", DbType.String, partNumber);
    db.AddInParameter(cmd, "@Quantity", DbType.Int32, qty);
    db.AddInParameter(cmd, "@WorkListTypeCode", DbType.String, code);
    db.AddInParameter(cmd, "@UserKey", DbType.Int32, userKey);

    return cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

enterprise-library executenonquery

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

ExecuteNonQuery()不保存任何记录

我正在使用基于WinForms的C#工具,该工具具有附加的基于MDF文件的数据库.我正在尝试使用该SqlCommand.ExecuteNonQuery()方法将记录保存到此附加的MDF数据库,但记录未保存.没有错误或异常发生; 唯一的问题是记录实际上没有保存.

Console.WriteLine在顶部显示了我正在尝试运行的查询.它的语法正确,如果我从输出窗口复制粘贴并单独运行它,它的工作原理.

我已正确定义连接字符串如下,它可以正常获取记录:

public static String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\TestBuildDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

这里我用来保存记录的功能:

public static void PerformDBWriteTransaction(string inputSQLStatement)
{
    Console.WriteLine(inputSQLStatement);
    DataTable returnDataTable = new DataTable();
    SqlConnection sqlConnection = new SqlConnection();
    sqlConnection.ConnectionString = connectionString;
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = sqlConnection;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = inputSQLStatement;
    cmd.Connection.Open();
    try
    {
        cmd.ExecuteNonQuery();
    }
    catch (SqlException ex)
    {
        errorMessages.Clear();
        errorMessages.Append("The following errors were found in the SQL statement:\n\n");

        for (int i = 0; i < ex.Errors.Count; …
Run Code Online (Sandbox Code Playgroud)

c# database sqlcommand mdf executenonquery

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

尽管使用了查询字符串,但在使用sql COUNT时,ExecuteNonQuery返回-1

出于某种原因,ExecuteNonQuery()在C#返回时-1,虽然当我单独运行查询时,该值返回所需的实际值.

例如:

try
{

    var connString ="Data Source=ServerName;InitialCatalog=DatabaseName;Integrated Security=true;"
    SqlConnection conn = new SqlConnection(connString);

    SqlCommand someCmd = new SqlCommand("SELECT COUNT(*) FROM SomeTable");

    someCmd.Connection = conn;

    conn.Open();

    var theCount = cmd.ExecuteNonQuery();

    conn.Close();
}
catch(Exception ex)
{
    Console.WriteLine(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

执行命令时返回-1.虽然如果单独运行查询,

SELECT COUNT(*) FROM SomeTable;
Run Code Online (Sandbox Code Playgroud)

4如果要查询的表具有4行,则列返回一行,其计数为count .

c# sql sql-server ado.net executenonquery

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

ExecuteNonQuery离开休眠等待命令会话

我有用C#编写的命令行实用程序,它更新了数据库中的一些记录,然后进入循环检查其他一些东西.出于某种原因,在SQL执行后,SQL执行总是在SQL Server 2008中留下休眠等待命令会话.我可以使用SQL服务器活动监视器并运行sp_who2来确认.但SQL事务确实已成功提交.我可以通过代码中的调试以及数据库中数据记录的时间戳来说明这一点.此外,当我明确停止命令行实用程序时,将打开打开的睡眠会话.这似乎表明我的函数创建了一些SQL连接对象,在应用程序中止时它被CLR垃圾收集之前无法处理.怎么会发生这种情况?谢谢.这是代码:

bool result = false;
     using (SqlConnection conn = new SqlConnection(this.Connection))
     {

        using (SqlCommand cmd = conn.CreateCommand())
        {
           cmd.CommandText =
                 @"if not exists (select id from pl where sj=@sj and ej=@ej and dateInactivated is null) 
                       insert into pl(sj,ej,pf, br, tk, lastModified )
                       values(@sj,@ej,@pf,@br,@tk,getDate())
                    else
                       update pl set sj=@sj,ej=@ej,pf=@pf,br=@br,tk=@tk,lastModified=getDate()
                       where sj=@sj and ej=@ej and dateInactivated is null
                    ";

           cmd.Parameters.AddWithValue("@sj", sj);
           cmd.Parameters.AddWithValue("@ej", ej);
           cmd.Parameters.AddWithValue("@pf", pf);
           cmd.Parameters.AddWithValue("@br", br);
           cmd.Parameters.AddWithValue("@tk", tkData);
           cmd.CommandTimeout = 60;
           SqlTransaction trans = null;
           try
           {
              conn.Open();
              trans …
Run Code Online (Sandbox Code Playgroud)

c# sql-server-2008-r2 executenonquery

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

ExecuteNonQuery always returns -1 even when the SQL statement is correct

I'm using the following function to calculate sum qty value of given item code(VB.NET, SQL Server, SQL). I do not get any errors but the returned value by the function is always -1. The data is available in the table(Screenshot attached). I think, something is missing in my code but cant figure it out. Any advice will be highly appreciated.

Public Function findPurchaseQty(ByVal itCode As String, ByVal fromDate As DateTime, toDate As DateTime) As Double
    Dim sql = "SELECT …
Run Code Online (Sandbox Code Playgroud)

sql vb.net sql-server executenonquery

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