Hyeon
Hyeon

Reputation: 3

C# winform- there is no error code, but i cannot insert items into Mssql DB

I'm making some book management system using WinForm in C#.

i think there is no error insert query(i cant find what's problem).. but i keep doing process, there is no data in DB. :(

i maked insertForm.cs and database.cs. please help me..

this is database.cs below:

public void GetBookInsert(BookEntity be)
        {   
            ConnectDB(); 
            try
            {
                cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = "INSERT INTO dbo.book (bookName,author,company,price,bookImage,classId,bookPlace)"
                                  + " VALUES (@bookName,@author,@company,@price,@bookImage,@classId,@bookPlace)";
                cmd.Parameters.Add(new SqlParameter("@bookName", SqlDbType.NVarChar, -1,be.BookName));
                cmd.Parameters.Add("@author", SqlDbType.NVarChar, -1,be.Author);
                cmd.Parameters.Add("@company", SqlDbType.NVarChar, -1,be.Company);
                cmd.Parameters.Add("@price", SqlDbType.Int,be.Price);
                cmd.Parameters.Add("@bookImage", SqlDbType.NVarChar, -1,be.bookImage);
                cmd.Parameters.Add("@classId", SqlDbType.NVarChar, -1,be.ClassId);
               // cmd.Parameters.Add(new SqlParameter("@bookDate", System.Data.SqlDbType.Date));
                //cmd.Parameters.Add(new SqlParameter("@buyDate", System.Data.SqlDbType.Date));
                cmd.Parameters.Add("@bookPlace", SqlDbType.NVarChar, -1,be.bookPlace);
                cmd.ExecuteNonQuery();
            }
            catch (SqlException e) {
                string msg = "Insert error";
                msg += e.Message;
            }
            finally
            {
                CloseDB();
            }

and insertForm.cs part code is:

private void buConfirm_Click(object sender, EventArgs e)
        {
                Con_Database bookDB = new Con_Database();

                BookEntity books = new BookEntity();
                books.BookName = textName.Text;
                books.Author = textAuthor.Text;
                books.Company = textCompany.Text;
                books.Price = Int32.Parse(textPrice.Text);
                books.bookImage = textImage.Text; 
                books.ClassId = comboClass.Text; 
               // books.BookDate = bookDate.Text; 
               // books.BuyDate = buyDate.Text; 
                bookDB.GetBookInsert(books);
             }
        }

Upvotes: 0

Views: 181

Answers (1)

Soner Gönül
Soner Gönül

Reputation: 98740

I think you are using SqlParameterCollection.Add Method (String, SqlDbType, Int32, String) overload in a wrong way.

The last parameter doesn't take the value of your parameter, it takes the source column (SourceColumn) if this SqlParameter is used in a call to Update. Because of that, your parameters doesn't have any values. And using -1 as a column length is meaningless.

Just use them like;

cmd.Parameters.Add("@author", SqlDbType.NVarChar).Value = be.Author;

Also use using statement to dispose your database connections and objects.

Upvotes: 1

Related Questions