none
更新資料表問題 RRS feed

  • 問題

  • 我用新增資料的按鈕改成修改的按鈕

    雖然功能有出來

    不過都跑到catch那邊

    try
                {
                    using (SqlConnection cn = new SqlConnection
                   (Properties.Settings.Default.BorrorSystemConnectionString))
                    using (SqlCommand com = cn.CreateCommand())
                    {
    
                        com.CommandText = "UPDATE 總表(料號,流水號,品名,儲位,規格,使用次數,可用次數,備註,安全庫存) VALUES (@Number,@waternumber,@name,@address,@type,@use,@canuse,@ps,@safe) ";
                        com.Parameters.AddWithValue("@Number", cbosearch.Text);
                        com.Parameters.AddWithValue("@waternumber", cbosearch.Text);
                        com.Parameters.AddWithValue("@name", textboxname.Text);
                        com.Parameters.AddWithValue("@address", cboaddress.Text);
                        com.Parameters.AddWithValue("@type", cbotype.Text);
                        com.Parameters.AddWithValue("@use", textboxuse.Text);
                        com.Parameters.AddWithValue("@canuse", textboxtime.Text);
                        com.Parameters.AddWithValue("@ps", textboxps.Text);
                        com.Parameters.AddWithValue("@safe", textboxsefe.Text);               //com.Parameters.AddWithValue("@safe", cboaddress.Text);           
                        cn.Open();
                        com.ExecuteNonQuery();
                        SqlDataAdapter datotal = new SqlDataAdapter
                            ("SELECT  *  FROM 總表 ORDER BY 料號 ", cn);
                    }
                }
                catch (System.Data.SqlClient.SqlException)
                {
                    using (SqlConnection cn = new SqlConnection
          (Properties.Settings.Default.BorrorSystemConnectionString))
                    {
                        cn.Open();
                        //載入表單
                        SqlDataAdapter datotal = new SqlDataAdapter
                        ("SELECT  *  FROM 總表 ORDER BY 料號 ", cn);
                        datotal.Fill(ds, "總表");
                        dataGridView1.DataSource = ds;//.Tables["總表"];
                        dataGridView1.DataMember = "總表";
                        MessageBox.Show("輸入錯誤,請重新輸入");
                    }
                         }
                ShowData();        
            }

    2014年10月31日 上午 01:01

解答

  • 你可以由 catch (SqlException e) 中的 e 得到錯誤原因。

    除非是你很確定 SqlException 的內容,否則最好還是用設定錯誤變數的方式,不然你會連出什麼錯都不知道。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 XX阿忠XX 2014年11月3日 上午 02:19
    2014年10月31日 上午 01:25
    版主

所有回覆

  • 你可以由 catch (SqlException e) 中的 e 得到錯誤原因。

    除非是你很確定 SqlException 的內容,否則最好還是用設定錯誤變數的方式,不然你會連出什麼錯都不知道。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 XX阿忠XX 2014年11月3日 上午 02:19
    2014年10月31日 上午 01:25
    版主
  • 可是我有一個疑問,他有更新怎麼還會跑到catch那邊

    剛抓出一個接近 "(" 錯誤,還是不知道在哪裡

     刪除列的也出現類似的情況

    try
                {
                    using (SqlConnection cn = new SqlConnection
                     (Properties.Settings.Default.BorrorSystemConnectionString))
                    {
                        cn.Open();
                        string sqlStr = "DELETE FROM 總表 WHERE 料號 = @name";
                        SqlCommand cmd = new SqlCommand(sqlStr, cn);
                        cmd.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar));
                        cmd.Parameters["@name"].Value = cbosearch.Text;
                        cmd.ExecuteNonQuery();
                    }
                    ShowData();
                }
                catch (Exception aa){
                    MessageBox.Show(aa.Message);
                }

    也是執行成功

    但是我的datagridview資料不是更新而是變兩倍

    重新載入才回復正常,資料也有順利刪除

    • 已編輯 XX阿忠XX 2014年10月31日 上午 02:40
    2014年10月31日 上午 02:32
  • 怎麼覺得您的Update敘述怪怪的:UPDATE (Transact-SQL)
    2014年10月31日 上午 04:08