WinForms 프로젝트에서 C#과 Oracle을 사용하고 있습니다. 나는 오류를 받고 있어요 :OracleParameterCollection.Add (문자열, 유형, 문자열, 크기, 문자열)
ORA-01400 cannot insert null into (string) when using "InsertCommand.Parameters.Add".
문제는 매개 변수 (":ID", ":NOME", ":OBSERVACAO", ":NUMERO", ":ENDERECO")
는 "srcColumn"의 값을받지 않는 방법 "추가"의 ("ID", "NOME", "OBSERVACAO", "NUMERO", "ENDERECO")
인수입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
public Form1()
{
InitializeComponent();
ConsultaGRID();
}
OracleConnection conn = new OracleConnection("Data Source=xxx; User ID=xxx; Password=xxx;");
DataTable tabela = new DataTable();
OracleDataAdapter da = new OracleDataAdapter();
private void ConsultaGRID()
{
while (conn.State != ConnectionState.Open) { conn.Open(); }
OracleCommand cmd = new OracleCommand("select ID, NOME, OBSERVACAO, NUMERO, ENDERECO from CADASTRO_FONES order by ID", conn);
da = new OracleDataAdapter(cmd);
da.Fill(tabela);
dataGridView1.DataSource = tabela;
}
private void dataGridView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.F6)//Inserir
{
GetInsert();
}
else if (e.KeyCode == Keys.F10)//Salvar
{
GetSave();
}
}
private void GetInsert()
{
tabela.Rows.Add();
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[0];
}
private void GetSave()
{
try
{
while (conn.State != ConnectionState.Open) { conn.Open(); }
da.InsertCommand = new OracleCommand("insert into CADASTRO_FONES (NOME, ID, OBSERVACAO, NUMERO, ENDERECO) values (:NOME ,:ID ,:OBSERVACAO ,:NUMERO ,:ENDERECO)", conn);
da.InsertCommand.Parameters.Add(":ID", OracleType.Number, 22, "ID");
da.InsertCommand.Parameters.Add(":NOME", OracleType.VarChar, 70, "NOME");
da.InsertCommand.Parameters.Add(":OBSERVACAO", OracleType.VarChar, 70, "OBSERVACAO");
da.InsertCommand.Parameters.Add(":NUMERO", OracleType.VarChar, 20, "NUMERO");
da.InsertCommand.Parameters.Add(":ENDERECO", OracleType.VarChar, 70, "ENDERECO");
da.Update(tabela);
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
finally
{
conn.Close();
}
}
는 여전히 작동하지 않는 다음과 코드에 "GetSave()"기능을 변경 :
당신은 Parameters.Add에 콜론을 제거 할 필요가private void GetSave()
{
try
{
while (conn.State != ConnectionState.Open) { conn.Open(); }
OracleCommand cmd = new OracleCommand("insert into CADASTRO_FONES (NOME, ID, OBSERVACAO, NUMERO, ENDERECO) values (:NOME ,:ID ,:OBSERVACAO ,:NUMERO ,:ENDERECO)", conn);
da.InsertCommand.Parameters.Add("ID", OracleType.Number, 22, "ID");
da.InsertCommand.Parameters.Add("NOME", OracleType.VarChar, 70, "NOME");
da.InsertCommand.Parameters.Add("OBSERVACAO", OracleType.VarChar, 70, "OBSERVACAO");
da.InsertCommand.Parameters.Add("NUMERO", OracleType.VarChar, 20, "NUMERO");
da.InsertCommand.Parameters.Add("ENDERECO", OracleType.VarChar, 70, "ENDERECO");
da.InsertCommand = cmd;
da.Update(tabela);
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
finally
{
conn.Close();
}
}
OldProgrammer, 답변 주셔서 감사합니다. 그래도 작동하지 않습니다. – BetaTester