簡體   English   中英

我無法在數據庫中添加行

[英]I can't add a row to my database

我想從表單向數據庫添加一行,這是我使用的代碼:

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");
            }

但是它給了我這個錯誤:

字符串或二進制數據將被截斷。 該語句已終止

問題出在哪兒 ?

您還必須確保數據庫中size on fieldsize on field符合您的string parameter length

您可以使用SubString method固定行內容的大小

您有關於圖像傳輸的問題

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

此錯誤意味着數據庫中的一列(或多列)太小而無法包含您要插入的文本。 您需要確保字符串不要太長,或者增加數據庫中列的長度。

沒有更多信息,我無法再查明問題了。

正如其他人所說,您正遇到錯誤所指出的一切:您要輸入的數據大於該列所允許的數據。

看看這個sqlfiddle

請注意,它可以工作,但是如果將插入內容更改為6個字符,則出於與上述相同的原因,它將無法構建模式。

該截斷錯誤意味着您嘗試插入的數據太大而無法放入列中。 您是否設置了可以向表列中添加多少數據的限制?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM