小编ale*_*ero的帖子

错误"当使用2个不同的命令时,"已经有一个与此命令关联的打开的DataReader必须先关闭"

我有这个遗留代码:

 private void conecta()
 {  
     if (conexao.State == ConnectionState.Closed)
         conexao.Open();
 }

 public List<string[]> get_dados_historico_verificacao_email_WEB(string email)
 {
     List<string[]> historicos = new List<string[]>();
     conecta();

     sql = 
         @"SELECT * 
         FROM historico_verificacao_email 
         WHERE nm_email = '" + email + @"' 
         ORDER BY dt_verificacao_email DESC, hr_verificacao_email DESC";

     com = new SqlCommand(sql, conexao);
     SqlDataReader dr = com.ExecuteReader();

     if (dr.HasRows)
     {
         while (dr.Read())
         {
             string[] dados_historico = new string[6];
             dados_historico[0] = dr["nm_email"].ToString();
             dados_historico[1] = dr["dt_verificacao_email"].ToString();
             dados_historico[1] = dados_historico[1].Substring(0, 10);
             dados_historico[2] = dr["hr_verificacao_email"].ToString();
             dados_historico[3] = dr["ds_tipo_verificacao"].ToString();

             sql = …
Run Code Online (Sandbox Code Playgroud)

c#

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

在C#中调用SQL定义的函数

我在TSQL中编写了这个标量函数:

create function TCupom (@cupom int)
returns float
as
begin
    declare @Tcu float;

    select @Tcu = sum (total) from alteraca2 where pedido = @cupom 

    if (@tcu is  null)
        set @tcu = 0;

    return @tcu;
end
Run Code Online (Sandbox Code Playgroud)

我想在我的C#代码中调用此函数.这是我到目前为止所拥有的:

public void TotalCupom(int cupom)
{ 
    float SAIDA;           
    SqlDataAdapter da2 = new SqlDataAdapter();

    if (conex1.State == ConnectionState.Closed)
    { 
        conex1.Open();
    }

    SqlCommand Totalf = new SqlCommand("Tcupom", conex1);
    SqlParameter code1 = new SqlParameter("@code", SqlDbType.Int);
    code1.Value = cupom ;
    Totalf.CommandType = CommandType.StoredProcedure ;
    SAIDA = Totalf.ExecuteScalar();

    return SAIDA; …
Run Code Online (Sandbox Code Playgroud)

c# sql visual-studio-2010 sql-server-2008

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

在app.config中保存和读取用户设置

我有这个app.config:

 <?xml version="1.0"?>
 <configuration>
 <configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
  <section name="Alvaro1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<connectionStrings>
<add name="conexx" connectionString="Data Source=192.168.1.2 ;Initial Catalog =ifdcontroladoria3 ;uid =sa;pwd = admin2012" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup>
<userSettings>
<Alvaro1.Properties.Settings>
   <setting name="servidor" serializeAs="String">
    <value />
  </setting>
  <setting name="banco" serializeAs="String">
    <value />
  </setting>
  <setting name="user" serializeAs="String">
    <value />
  </setting>
  <setting name="senha" serializeAs="String">
    <value />
  </setting>
</Alvaro1.Properties.Settings>
</userSettings>
Run Code Online (Sandbox Code Playgroud)

我在头文件和引用中设置了system.configuration,并使用此代码保存值:

   Properties.Settings.Default.servidor = comboBox1.Text;
   Properties.Settings.Default.banco = cmbBancos.Text;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试读取这些值时,没有任何东西被保存:

        servidor …
Run Code Online (Sandbox Code Playgroud)

c# app-config

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

检查datagridview单元格是null还是空

我必须更改单元格的背景颜色,当它们的值是字符串或空时,这是我写的代码类似于其他代码:

for (int rowIndex = 0; rowIndex < dataGridView1.RowCount; rowIndex++)
            {
             string conte = dataGridView1.Rows[rowIndex].Cells[7].Value.ToString()  ;
                if (string.IsNullOrEmpty(conte))
                {
                // dataGridView1.Rows[rowIndex].Cells[7].Style.BackColor = Color.Orange;
                }
                else
                 { dataGridView1.Rows[rowIndex].Cells[7].Style.BackColor = Color.Orange; }
        } 
Run Code Online (Sandbox Code Playgroud)

数据集完成后,显示填充的datagridview并显示此错误: 在此输入图像描述

我怎样才能解决这个问题??有另一种方法来编写代码吗?

c# datagridview visual-studio

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

数据透视表SQL中的水平总计

我有此查询工作:

      select cap_idPlanoContasFin  , [3684],[2234],[2] ,  
      from 
      (
      select cap_idPlanoContasFin,cap_idempresa,sum(cap_valorfatura) 
          as Stotal    
          from erp_ContasPagar 
       group by cap_idPlanoContasFin , cap_idEmpresa 

       ) as sourcetable
       pivot 
       (sum(Stotal)for cap_idEmpresa in ([3684],[2234],[2])
       )as pivottable;
Run Code Online (Sandbox Code Playgroud)

该查询返回:

      cap_idPlanoContasFin  3684          2234       2
                      3 9000          NULL      NULL
                     10 1057840,68    NULL  1865081,35
                     11 NULL          7283,1    591,9
                     12 NULL          NULL  178914,45
                     13 9305,07       1117,6    500
                     14 NULL          59333,5   34611,74
Run Code Online (Sandbox Code Playgroud)

我想在水平总计示例中输入相同的查询:

      cap_idPlanoContasFin  3684      2234            2           Total
      ---------------------------------------------------------------------      
                       13   9305,07    1117,6   500          10922,67
Run Code Online (Sandbox Code Playgroud)

怎么做?我已经读过一些东西UNION

sql t-sql sql-server sql-server-2008

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

Configuration Manager未在app.config中保存

我有这个app.config:

<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
  <add name="conexx" connectionString="Data Source=192.168.1.2 ;Initial Catalog   =ifdcontroladoria3 ;uid =sa;pwd = admin2012" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup><supportedRuntime version="v4.0"   sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>
Run Code Online (Sandbox Code Playgroud)

我试图用这个C#更新这个连接字符串:

  coneydstr = @"Data Source=" + comboBox1.Text + ";Initial Catalog =" + cmbBancos.Text + ";uid =" + txtUsuario.Text + ";pwd =" + txtPassword.Text;
        try
         { coneyd.ConnectionString = coneydstr; 
           coneyd.Open(); 
           funciona = true;
           lblStringSalida.Text = coneydstr;
         }
         catch (Exception ex)
        {  MessageBox.Show(coneyd + ex.Message.ToString());  }

        if (funciona)
        { 
          Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
          config.ConnectionStrings.ConnectionStrings["conexx"].ConnectionString = coneydstr;
          config.Save();   
        } …
Run Code Online (Sandbox Code Playgroud)

c# configurationmanager visual-studio-2010

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

通过SSIS在SQL中插入XML文件

我有这个程序

ALTER proc [dbo].[adenti] 
(
   @entra nvarchar(max)
)
as 
DECLARE @sql varchar(4000); 
SET @sql = 'INSERT INTO provaxml (arquivo) SELECT CAST(BulkColumn AS XML) FROM OPENROWSET(BULK ''' + @entra + ''', SINGLE_BLOB) as arquivo'; 
EXEC( @sql );
Run Code Online (Sandbox Code Playgroud)

上面的代码有效.

是否可以使用Integration Services将路径中的所有XML文件插入到SQL表中?

sql sql-server ssis sql-server-2008

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

SQL Server存储过程不适用于varchar第二个参数

我在SQL Server中编写了这个过程:

 ALTER  PROCEDURE [dbo].[buscapro1]
    @prod nvarchar(80), 
    @opc bit     
AS
    if @opc=1 
    begin
       select 
          idproduto, CODIGO, codfab, produto, Descricao, PRECOVENDA 
       from 
          verproduto 
       where 
          CODIGO like @prod
    end

    if @opc=2
    begin
       select 
           idproduto, CODIGO, codfab, produto, Descricao, PRECOVENDA 
       from 
           verproduto 
       where 
           produto like @prod 
   end
Run Code Online (Sandbox Code Playgroud)

如果我发送此行:

  buscapro1 'bela-01', 1
Run Code Online (Sandbox Code Playgroud)

我有积极回报的行.现在问题是第二个参数"produto"返回空

  select * 
  from verproduto 
  where produto like 'aparador'
Run Code Online (Sandbox Code Playgroud)

回报

 idProduto  CODIGO   PRODUTO     Descricao  PRECOVENDA  TRATAMENTO
 -------------------------------------------------------------------------
  1480          BELA-01  APARADOR    Aparador      325          Bela Moveis
Run Code Online (Sandbox Code Playgroud)

当我发送

 buscapro1 'aparador',2
Run Code Online (Sandbox Code Playgroud)

返回空,我做错了什么?

谢谢alejandro

sql t-sql sql-server sql-server-2008

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