Estava aqui a fazer um pouco de leitura e vi este artigo que me parece muito interessante por abranger todas as possibilidades existentes para o envio de Objectos não serializáveis numa mensagem SOAP, e sendo um problema com o qual muitas vezes nos deparamos achei interessante partilhar este link com todos vocês.
Podem encontrar o mesmo em http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnwebsrv/html/opaquedata.asp.
Estava ainda à pouco a fazer uma pequena leitura de alguns blogs e alguns artigos sobre o ASP.NET 2.0 e tb sobre a .NET Framework 2.0, quando deparei com uma coisa que mto provávelmente deverá interessar à grande maioria dos programadores, que é saber quais os membros e tipos que foram descontinuados na nova versão da .NET Framework.
Para isso podem fazer download do um ficheiro zip que se encontra no seguinte endereço http://www.gotdotnet.com/team/changeinfo/Beta1ObsData.zip , o qual tem uma descrição exaustiva de quais as alterações de uma versão para a outra.
Se entretanto encontrarem outras alterações não referenciadas, podem contribuír para que elas sejam catalogadas e talvez apontar razões pelas quais pensam que deveriam ser mantidas. Podem fazer isso no seguinte url: http://www.gotdotnet.com/team/changeinfo/default.aspx.
Espero que gostem.
Nuno Filipe Godinho
Muitas vezes deparamo-nos com questões que estão directamente relacionadas com questões de performance, de modularidade, de flexibilidade, etc. Uma dessas questões é quando queremos saber quais os parâmetros de uma determinada Stored Procedure por forma a que possamos fazer um método genérico de chamada às mesmas. Com isto surge a questão de como podemos preencher os parâmetros do nosso SqlCommand ou OracleCommand, ou um Command de outro provider. Esta questão é de resposta simples mas que por vezes não é do conhecimento geral e por isso a criação de um pequeno artigo por forma a que possam ser eliminadas algumas horas de trabalho para quem anda às voltas com estas situações.
Para ver o artigo click aqui.
Espero que o artigo seja do vosso interesse, e em caso de alguma questão estão à vontade, basta fazer o post que responderei assim que possível,
Nuno Godinho
Muitas vezes deparamo-nos com questões que estão directamente relacionadas com questões de performance, de modularidade, de flexibilidade, etc. Uma dessas questões é quando queremos saber quais os parâmetros de uma determinada Stored Procedure por forma a que possamos fazer um método genérico de chamada às mesmas. Com isto surge a questão de como podemos preencher os parâmetros do nosso SqlCommand ou OracleCommand, ou outro Command de outro provider. Esta questão é de resposta simples mas que por vezes não é do conhecimento geral e por isso a criação deste pequeno artigo por forma a que possam ser eliminadas algumas horas de trabalho para quem anda às voltas com estas situações.
Para a ilustração desta questão irei criar uma pequena aplicação de Windows Forms que não irá fazer mais do que receber a Origem dos Dados (Data Source), a Base de Dados (Database) e qual o nome da Stored Procedure que desejamos inquirir acerca dos seus parâmetros, sendo que após o click no botão Execute os parâmetros da mesma irão aparecer numa Datagrid por forma a que os possamos consultar.
Então começemos.
Em primeiro lugar teremos de efectuar o formulário da nossa aplicação que irá ficar com o seguinte aspecto:
E agora passemos à parte que interessa. (Código)
No evento de OnClick do botão de Executar iremos começar por criar a nossa SqlConnection através da seguinte instução:
string connectionString = "Data
Source=" + txtDataSource.Text + "; Initial Catalog=" + txtDatabase.Text + "; Integrated Security = SSPI;";
SqlConnection conn = new SqlConnection(connectionString);
Posteriormente iremos criar o um objecto do tipo SqlCommand por forma a definir qual a StoredProcedure que irá ser inquirida.
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = txtStoredProcedure.Text;
cmd.CommandType = CommandType.StoredProcedure;
Agora sim vamos à parte que interessa, que é precisamente a fase em que populamos os parâmetros da StoredProcedure inquirida, através do seguinte código:
try
{
conn.Open();
SqlCommandBuilder.DeriveParameters(cmd);
}
finally
{
if (conn.State != ConnectionState.Closed)
conn.Close();
}
Por fim e para terminar o nosso pequeno exemplo, teremos de tornar a colecção de parâmetros do nosso SqlCommand como a origem dos dados apresentados na nossa DataGrid, da seguinte forma:
dataGrid1.DataSource = cmd.Parameters;
Nota: A Chave para descobrir dinâmicamente quais os parâmeteros de uma StoredProcedure é a utilização do método estátido DeriveParameters da classe SQLCommandBuilder, sendo que para a sua correcta utilização, é necessário que seja passado o objecto do tipo SqlCommand que criámos anteriormente, por forma ao mesmo ser populado com os parâmeteros necessários para a sua utilização. Quando é efectuada a chamada ao método DeriveParameters é necessário que a ligação à base de dados se encontre aberta, pois só assim o DeriveParameters pode inquirir a base de dados acerca dos parâmetros associados à stored procedure.
Poderá efectuar download do código deste exemplo aqui.