내 응용 프로그램이 잘 작동했지만 고객이 몇 가지 기능을 추가하기를 원했습니다. 이제 앱을 실행할 때 어떤 것이 든 작동하지만 삽입 쿼리를 실행하는 버튼을 클릭하면 다음 메시지와 함께 예외가 발생합니다.
The parameterized query '(@ID int,@Subj nvarchar(50),@Pic varbinary(8000),@LetDate date,@' expects the parameter '@Pic', which was not supplied.
그 어리석은 괄호는 무엇입니까? 프로그램의이 부분의 코드 :
conn.Open();
string sqlcmd = "Insert into Pictures (ID, Subj, Pic, LetDate, LetTitle) Values (@ID, @Subj, @Pic, @LetDate, @LetTitle)";
insertCommand = new SqlCommand(sqlcmd, conn);
// For image data, we save the bytes into the database. We save the image to the JPG format bytes.
insertCommand.Parameters.Add("ID", SqlDbType.Int).Value = (++lastID);
insertCommand.Parameters.Add("Subj", SqlDbType.NVarChar, 50).Value = textBox1.Text;
insertCommand.Parameters.Add("Pic", SqlDbType.VarBinary).Value = dynamicDotNetTwain1.SaveImageToBytes(lastIndex, Dynamsoft.DotNet.TWAIN.Enums.DWTImageFileFormat.WEBTW_JPG);
insertCommand.Parameters.Add("LetDate", SqlDbType.Date).Value = dateTimeSelector1.Value.Value.Date;
insertCommand.Parameters.Add("LetTitle", SqlDbType.NText).Value = titleTextBox1.Text;
index++;
int queryResult = insertCommand.ExecuteNonQuery();
if (queryResult == 1)
MessageBox.Show("تصویر با موفقیت در پایگاه داده ذخیره شد", "پیغام", MessageBoxButtons.OK, MessageBoxIcon.Information);
conn.Close();
이것은 프로그램의 다른 곳에서 발생하는 오류이며 저장 프로 시저 실행 코드와 관련이 없습니다.
SQL 오류 메시지 "제공되지 않은 '@VariableName'매개 변수가 필요합니다." 일반적으로 매개 변수 값을 null로 설정하고 있음을 나타냅니다. 실제로 쿼리에 NULL을 전달하려면 DBNull.Value 값을 사용해야합니다. 그러나 실제 값을 전달하려는 것 같습니다. 따라서 문제의 원인은 다음 줄입니다.
insertCommand.Parameters.Add("Pic", SqlDbType.VarBinary).Value = dynamicDotNetTwain1.SaveImageToBytes(lastIndex, Dynamsoft.DotNet.TWAIN.Enums.DWTImageFileFormat.WEBTW_JPG);
dynamicDotNetTwain1.SaveImageToBytes () 함수가 null을 반환하는 이유를 파악하고 해당 함수가 예상대로 작동하도록하면 저장 프로 시저가 예상대로 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다