Visual Studio 2015를 통해 Microsoft Access 데이터베이스의 테이블에 행을 삽입하려고합니다.Visual Studio에서 C#을 사용하여 Microsoft Access 데이터베이스, 삽입, 업데이트 및 삭제
시나리오는 다음과 같습니다. QuestionData
클래스와 Question
클래스입니다. 테이블 exams
및 테이블 questions
.
public static bool addQuestion(QuestionData quesData)
{
if (quesData == null || quesData.question == null) { return false; }
List<QuestionData> questionsData = new List<QuestionData>();
string connetionString = null;
OleDbConnection cnn;
connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database.mdb;";
cnn = new OleDbConnection(connetionString);
try
{
string insertCmd = "INSERT INTO questions (exam_id, [name], question_text, withImage, question_correctAnswer, answer_1, answer_2, answer_3, answer_4) VALUES (@exam_id, @name, @question_text, @withImage, @question_correctAnswer, @answer_1, @answer_2, @answer_3, @answer_4)";
OleDbCommand cmd = new OleDbCommand(insertCmd);
cmd.Parameters.Add("@exam_id", OleDbType.Numeric).Value = quesData.examId;
cmd.Parameters.Add("@name", OleDbType.LongVarChar).Value = quesData.question.getName();
cmd.Parameters.Add("@questionText", OleDbType.LongVarChar).Value = quesData.question.getQuestionText();
cmd.Parameters.Add("@withImage", OleDbType.Boolean).Value = quesData.question.isImageEnabled();
cmd.Parameters.Add("@question_CorrectAnswer", OleDbType.Numeric).Value = quesData.question.getCorrectAnswer();
cmd.Parameters.Add("@answer_1", OleDbType.LongVarChar).Value = quesData.question.getAnswer(0);
cmd.Parameters.Add("@answer_2", OleDbType.LongVarChar).Value = quesData.question.getAnswer(1);
cmd.Parameters.Add("@answer_3", OleDbType.LongVarChar).Value = quesData.question.getAnswer(2);
cmd.Parameters.Add("@answer_4", OleDbType.LongVarChar).Value = quesData.question.getAnswer(3);
cmd.Connection = cnn;
cnn.Open();
int result = cmd.ExecuteNonQuery();
cnn.Close();
return true;
}
catch (Exception ex)
{
MessageBox.Show("Exception: \n Source: " + ex.Source + "\n Message: " + ex.Message);
cnn.Close();
return false;
}
}
모든없이 컴파일와 함께 잘 작동 또는 런타임 오류 및 cmd.ExcuteNonQuery();
라인은 양의 값 (1)
을 반환하지만 아무것도 데이터베이스 파일에 발생하지 :
내 코드입니다. 그러나 Read Query
은 잘 작동하고 그 일을합니다.
나는 Google을 검색하여 인터넷에서 모든 단일 솔루션을 시도했지만 아무 결과도 변경되지 않았습니다.
문제를 해결하는 데 도움이되는 정보와 가이드를 보내 주시면 감사하겠습니다.
변화량 exam_id], [이름], [QUESTION_TEXT], [withImage], [question_correctAnswer], [ANSWER_1], [ANSWER_2], [ANSWER_3 ], [answer_4]) –
올바른 'database.mdb' 파일을보고 계십니까? 응용 프로그램이 변경 사항을 확인하는 파일이 아닌 다른 파일에 쓰고 있다고 생각됩니다. 모호성을 없애려면 full 연결 문자열에있는 경로 – sstan
@sstan 나는 모든 기능에 동일한 연결 문자열을 사용하고 있기 때문에 그렇게 생각하지 않습니다. 하나를 선택하고 Access 소프트웨어를 통해 디버그 폴더에서 데이터베이스를 편집하면 작동합니다. 다른 함수를 읽는 중입니다. 그래서 나는 단지 하나의 데이터베이스라고 생각합니다. 내가 놓친 것은 무엇입니까? –