Pergunta

Eu criei um rigidez dataset (MyDataSet) no meu .NET aplicativo. Por uma questão de simplicidade, vamos dizer que tem um DataTable (MyDataTable), com uma coluna (MyCol). MyCol tem seu DataType propriedade definida como "System.Int32", e sua propriedade AllowDBNull conjunto para "true".

Eu gostaria de criar manualmente uma nova linha, e adicioná-lo a este conjunto de dados. Eu criar a linha sem um problema com algo como:

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow();

Fine. No entanto, quando tento definir o valor para DBNull:

myRow.MyCol = DBNull.Value;

me disseram que eu não posso fazer isso ... que ele não pode lançar que para um int. Isso faz sentido, de certa forma, desde que eu tenha definido que ele seja um int ... mas então como posso obter DBNull lá? Que não estou suposto ser capaz de ter DBNull lá? Não é isso que a propriedade AllowDBNull é para?

Estou obviamente faltando alguma coisa fundemental. Alguém pode ajudar a explicar o que é?

EDIT: Eu também tentei entrar "int?" como o tipo de dados, mas Visual Studio gera um erro quando eu inseri-lo, dizendo que "Coluna requer um tipo de dados válido."

Foi útil?

Solução

você tem na classe MyDataTableRow um método gerado chamado:. SetMyColNull ()

myRow.SetMyColNull();

Você também pode fazer:

myRow["MyCol"] = DBNull.Value;

porque myRow["MyCol"] é do tipo object

EDIT (adicionado por Pergunta OP):

Há também um método de contrapartida gerados por ler este valor de volta para fora, IsMyColNull ().

Outras dicas

Há duas coisas.

Permitindo DBNull é um ajuste separado de ser capaz de definir o valor como DBNull.

Eu só usei a interface DataSet XSD para definir este ... mas eu tive que não só definir "AllowDBNull = true", mas eu também tinha que definir "NullValue = (null)". Originalmente "NullValue" foi definido como "(Exception)". Isto significava que o conjunto de dados aceitaria bieng .Reabastecer () ed com null, mas não permitem que você defina manualmente o valor como nulo.

Não tenho certeza se este é o seu problema, mas soa similar.

basta ir ao modo de designer no conjunto de dados e clique direito no campo que pretende ser nulo habilitado e selecione Propriedades, na janela Propriedades, definir AllowDBNull como True e NullValue para (NULL); ele trabalha para mim mesmo! melhores cumprimentos!

int não aceita nulo, mas int? (A versão INullable) faz. Acho que você precisa que tipo de dados em vez disso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top