none
请问WPF 如何掉SQL存储过程? RRS feed

  • 问题

  • //调用存储过程代码
         SqlCommand cmd =new SqlCommand();
          cmd.Connection = new SqlConnection(Common.GetConnectionString());
          cmd.CommandType =CommandType.StoredProcedure;
          cmd.CommandText ="[dbo].[Paging]";
          SqlParameter[] parameters ={
                          new SqlParameter("@TableName", SqlDbType.VarChar),
                          new SqlParameter("@ReFieldsStr", SqlDbType.VarChar),
                          new SqlParameter("@OrderString", SqlDbType.VarChar),
                          new SqlParameter("@WhereString", SqlDbType.VarChar),
                          new SqlParameter("@PageSize", SqlDbType.Int),
                          new SqlParameter("@PageIndex", SqlDbType.Int),
                          new SqlParameter("@TotalRecord", SqlDbType.Int),
                        };
          parameters[0].Value = "dbo.UserInfo";
          parameters[1].Value = "*";
          parameters[2].Value = "UserID";
          parameters[3].Value = "UserID!=Null";
          parameters[4].Value = 20;
          parameters[5].Value = 1;
          parameters[6].Direction = ParameterDirection.Output;
          cmd.Parameters.AddRange(parameters);
          cmd.Connection.Open(); 
          cmd.ExecuteNonQuery();
        //  if (base_t.SelectCommand.ExecuteNonQuery() > 0)
        //  {
        //    ds = new DataSet();
        //    base_t.Fill(ds, "sel_tab");
        //    if (ds.Tables["sel_tab"].Rows.Count > 0)
        //    {
        //      lstProducts.DataContext = ds.Tables["sel_tab"];
        //    }
        //  }
    

    请问如何虚拟一张表赋给lstProducts.DataContext?

    我现在的程序  cmd.ExecuteNonQuery()始终为-1

    2011年4月20日 2:16

答案

  • 你好,cmd.ExecuteNonQuery() 作用是:对连接执行 Transact-SQL 语句并返回受影响的行数。

    对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。不知道你的存储过程执行的是什么操作,如果是查询建议你不要用这个。

    MSDN上的一个例子,请参考:

    static void GetSalesByCategory(string connectionString,
        string categoryName)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            // Create the command and set its properties.
            SqlCommand command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = "SalesByCategory";
            command.CommandType = CommandType.StoredProcedure;

            // Add the input parameter and set its properties.
            SqlParameter parameter = new SqlParameter();
            parameter.ParameterName = "@CategoryName";
            parameter.SqlDbType = SqlDbType.NVarChar;
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = categoryName;

            // Add the parameter to the Parameters collection.
            command.Parameters.Add(parameter);

            // Open the connection and execute the reader.
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();

            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Console.WriteLine("{0}: {1:C}", reader[0], reader[1]);
                }
            }
            else
            {
                Console.WriteLine("No rows found.");
            }
            reader.Close();
        }
    }

    2011年4月21日 9:35
  • 我找到错误的原因了,因为这句些错误parameters[3].Value = "UserID!=Null";在sql中是错误的所以返回了-1

     

    2011年5月6日 9:33

全部回复

  • 你好,cmd.ExecuteNonQuery() 作用是:对连接执行 Transact-SQL 语句并返回受影响的行数。

    对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。不知道你的存储过程执行的是什么操作,如果是查询建议你不要用这个。

    MSDN上的一个例子,请参考:

    static void GetSalesByCategory(string connectionString,
        string categoryName)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            // Create the command and set its properties.
            SqlCommand command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = "SalesByCategory";
            command.CommandType = CommandType.StoredProcedure;

            // Add the input parameter and set its properties.
            SqlParameter parameter = new SqlParameter();
            parameter.ParameterName = "@CategoryName";
            parameter.SqlDbType = SqlDbType.NVarChar;
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = categoryName;

            // Add the parameter to the Parameters collection.
            command.Parameters.Add(parameter);

            // Open the connection and execute the reader.
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();

            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Console.WriteLine("{0}: {1:C}", reader[0], reader[1]);
                }
            }
            else
            {
                Console.WriteLine("No rows found.");
            }
            reader.Close();
        }
    }

    2011年4月21日 9:35
  • 你好,

    我想问一下,L_I_N_Q的回复对你有帮助吗?我觉得会有帮助,所以现在我把这个回复标记为答案,如果你不同意我的观点的话可以取消标记答案,如果您还有什么其他问题,我们很乐意帮您解决。

    谢谢。


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年5月5日 5:11
    版主
  • 我找到错误的原因了,因为这句些错误parameters[3].Value = "UserID!=Null";在sql中是错误的所以返回了-1

     

    2011年5月6日 9:33