2012-09-20 2 views
0
나는 데이터베이스에 내 양식에서 행을 추가 할

에 행을 추가 할 수 없습니다, 이것은 내가 그것을 위해 사용되는 코드입니다 :내 데이터베이스

private Connexion connexion = new Connexion(); 
private SqlDataAdapter daAuteur; 
private byte[] imgData; 

    class Connexion 
     { 
      public DataSet ds = new DataSet(); 
      public SqlConnection cnx = new SqlConnection("Data Source=MAC-BOOK-AIR;Initial Catalog=Gestion_bib;Integrated Security=True"); 

    } 

    private void AjoutAuteur_Load(object sender, EventArgs e) 
      { 
       InitializeOpenFileDialog(); 
       daAuteur = new SqlDataAdapter("select * from Auteur", connexion.cnx); 
       daAuteur.Fill(connexion.ds, "Auteur"); 
      } 

    private void AjoutAuteur_Load(object sender, EventArgs e) 
      { 
       InitializeOpenFileDialog(); 
       daAuteur = new SqlDataAdapter("select * from Auteur", connexion.cnx); 
       daAuteur.Fill(connexion.ds, "Auteur"); 
      } 

     private void ajouterNewBook_Click(object sender, EventArgs e) 
      { 
       DataRow row = connexion.ds.Tables["Auteur"].NewRow(); 
       row[1] = String.IsNullOrEmpty(nomAuteurBox.Text) ? 
        DBNull.Value : 
        nomAuteurBox.Text as Object; 
       row[2] = String.IsNullOrEmpty(prenomAuteurBox.Text) ? 
        DBNull.Value : 
        prenomAuteurBox.Text as Object; 
       row[3] = String.IsNullOrEmpty(nomAuteurBox.Text) ? 
        DBNull.Value : 
        dateDeNaissanceAuteurBox.Text as Object; 
       row[4] = String.IsNullOrEmpty(lieuDeNaissanceAuteurBox.Text) ? 
        DBNull.Value : 
        lieuDeNaissanceAuteurBox.Text as Object; 
       row[5] = String.IsNullOrEmpty(nationaliteAuteurBox.Text) ? 
        DBNull.Value : 
        nationaliteAuteurBox.Text as Object; 
       if (decesCheckBox.Checked) 
       { 
        row[6] = true; 
        row[7] = String.IsNullOrEmpty(dateDecesAuteurBox.Text) ? 
        DBNull.Value : 
        dateDecesAuteurBox.Text as Object; 
        row[8] = String.IsNullOrEmpty(lieuDecesAuteurBox.Text) ? 
         DBNull.Value : 
         lieuDecesAuteurBox.Text as Object; 
       } 
       else 
       { 
        row[6] = false; 
        row[7] = DBNull.Value; 
        row[8] = DBNull.Value; 
       } 
       row[9] = String.IsNullOrEmpty(periodeAuteurBox.Text) ? 
        DBNull.Value : 
        periodeAuteurBox.Text as Object; 
       row[10] = String.IsNullOrEmpty(resumeAuteurBox.Text) ? 
        DBNull.Value : 
        resumeAuteurBox.Text as Object; 
       row[11] = String.IsNullOrEmpty(lien1Box.Text) ? 
        DBNull.Value : 
        lien1Box.Text as Object; 

       imgData = new ImageConverter().ConvertTo(auteurPhoto.Image, typeof(Byte[])) as Byte[]; 
       row[12] = imgData == null ? 
        DBNull.Value : 
        imgData as Object; 
       connexion.ds.Tables["Auteur"].Rows.Add(row); 

       SqlCommandBuilder cmb = new SqlCommandBuilder(daAuteur); 
       daAuteur.Update(connexion.ds, "Auteur"); 
      } 

하지만 그것은 나에게 오류를 제공합니다

문자열 또는 이진 데이터가 잘립니다. 진술서가 만료되었습니다

어디에 문제가 있습니까?

+0

SQL 엔진에 전달하는 값이 비어 있거나 null이며이 오류와 같은 원인이 있다고 생각합니다. 마녀가 비어있는 것을 찾기 위해 코드를 추적하십시오. –

+0

각'row [i] ='문을' row [i] = "dummy"또는 행에 필요한 유형. 실행중인 경우 값을 하나씩 다시 넣고 실패를 일으키는 값을 확인합니다. –

답변

3

또한 데이터베이스에 size on field이 일치하는지 확인해야합니다 string parameter length

당신은 당신은 이미지

imgData = new ImageConverter().ConvertTo(auteurPhoto.Image, typeof(Byte[])) as Byte[]; 
row[12] = imgData == null ? DBNull.Value : imgData; //Adjust here 
2

이 오류는 데이터베이스에있는 하나 이상의 열이 너무 작아서 삽입하려는 텍스트를 포함 할 수 없음을 의미합니다. 문자열이 너무 길지 않도록하거나 데이터베이스의 열 길이를 늘려야합니다.

더 이상의 정보가 없으면 문제를 더 이상 지적 할 수 없습니다.

0

잘라 내기 오류는 삽입하려고하는 데이터가 너무 커서 열에 맞출 수 없다는 것을 의미합니다. 테이블 열에 추가 할 수있는 데이터의 양에 대한 제한을 설정 했습니까?

2

의 transfering에 대한 문제가

SubString method를 사용하여 행 내용의 크기를 수정할 수 있습니다 다른 사람들이 말했듯이, 당신은 오류가 진술하고있는 것과 정확히 일치합니다 : 입력하려는 데이터가 열에 허용 된 것보다 큽니다.

가 작동하는지 this sqlfiddle

공지 사항에서보세요,하지만 당신은 6 개 문자를 가지고 삽입을 변경하는 경우, 당신이 언급 한 같은 이유로 스키마를 구축 할 수 없게됩니다.

관련 문제