2014-06-21 2 views
4

프로그래밍에있어 정말 초보자입니다. 내 지식이 실제로 충분하지 않은 것으로 생각하면 실례합니다. 내 학교에서 C# 프로젝트를하고 있는데 데이터베이스를 시작하는 데 문제가 있습니다. 여기 Windows 양식 응용 프로그램 데이터베이스 : "System.Data.dll에서 'System.ArgumentException'형식의 처리되지 않은 예외가 발생했습니다."

일부 코드입니다 : 이러한 코드와

private void buttonPurchase_Click(object sender, EventArgs e) 
{ 
    if (MessageBox.Show("Purchase?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
    { 
     // store invoice 
     System.Data.SqlClient.SqlConnection sqlConnection1 = 
      new System.Data.SqlClient.SqlConnection("CarDBConnectionString"); 
     System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(); 
     cmd.CommandType = System.Data.CommandType.Text; 
     cmd.CommandText = "INSERT into invoiceTbl(invoiceId, date, time) values (1, 21/6/2014, 11:13PM)"; 

     sqlConnection1.Open(); 
     cmd.ExecuteNonQuery(); 
     sqlConnection1.Close(); 
    } 
} 

, 나는 아래, "인덱스 0 1에서 시작하는 사양에 맞지 않는 오류를 초기화 문자열의

형식에 직면 유지 "처리되지 않은 예외 'System.DataException'System.Data.dll에서 System.ArgumentException '이 발생했습니다."

내 app.config 0123의 코드는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    </configSections> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 

    <connectionStrings> 
    <add name="CarDBConnectionString" connectionString="Data Source=(LocalDB)\v11.0;InitialCatalogue=CarDB;AttachDbFilename=|DataDirectory|\CarDB.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    <add name="Draft_1.Properties.Settings.CarDBConnectionString" 
     connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CarDB.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

</configuration> 
나는 인터넷 검색을 시도했지만 모든 솔루션을 이해할 수없는 것 같습니다 .-(모든 도움은 매우 감사 할 것입니다, 감사합니다!

+0

@Steve 초기 카탈로그가 자동 생성되어 카탈로그로 변경하면 여전히 동일한 오류가 발생합니다 .- ( – user3763216

답변

3

입력 한 부분이 "InitialCatalogue" (올바른 키는 Initial Catalog)입니다. 코드에 오류가 있습니다.

연결 문자열의 값을 읽고 생성자 SqlConnection에 전달해야합니다. 유효한 연결 문자열을 통과해야 : 생성자는 유효한 연결 문자열이 설정 파일 섹션

의 열쇠 당신은 @ 스티브가 좋은 지적을했다

string connectionString = ConfigurationManager.ConnectionStrings 
             ["CarDBConnectionString"].ConnectionString; 
    SqlConnection sqlConnection1 = new SqlConnection(connectionString); 
+0

그래도 오류를 없앨 수있었습니다. 도움과 신속한 답변을 해주신 스티브에게 감사드립니다 :) 좋은 하루 되세요. ! – user3763216

2

사용할 수 있습니다 기대하고있다.

둘째,이 같은 단일 따옴표로 매개 변수 '값을 묶으려고 :

"INSERT into invoiceTbl(invoiceId, date, time) values (1, '21/6/2014', '11:13PM')" 

더 나은 연습은 하나의 날짜을 사용하는 것입니다 (또는 타임 스탬프라는 이름으로) 두 개를 포함 DB 필드 정보 (일반적으로 DateTime.Now에 해당). 수정 된 검색어는 다음과 같아야합니다.

"INSERT into invoiceTbl(invoiceId, datetime) values (1, '21/6/2014 11:13PM')" 

희망이 있습니다. Rgds,

+1

알렉스, 감사합니다! 귀하의 도움과 노력은 많이 감사드립니다! :) 멋진 하루 되세요 ~ – user3763216

+1

대단히 환영합니다! 당신 같은 :) –

0

이 오류는 서버에서 "연결"로 재생하고 (데이터 집합) .xsd 파일이있는 경우에도 발생할 수 있습니다. 이 경우 .xsd 내부의 연결 문자열이 방해 받고이 오류가 발생합니다. 제 경우에는 xsd 파일에서 테이블을 삭제하고 새로운 연결 문자열로 동일한 테이블을 다시 작성했습니다.

이 방법은 소규모 프로젝트에만 적합합니다. 그러나 최소한 오류가 어디에서오고 있는지 생각해보십시오.

관련 문제