VisualStudio2013內置SQLServer入門(二)--增刪改查


前一篇 http://www.cnblogs.com/qixi233/p/4766451.html

這篇是sqlserver的操作

界面比較走心哈哈哈,將就着看,主要就是下面增刪改查四個btn

對於sqlserver的操作基本就幾個:

  •   開關SqlConnection
  •       SqlCommand將"SQL命令"與"SQLConnection"連接
  •   執行命令並根據返回值來將操作結果反饋給用戶

現在開始操作:(代碼比較簡單,如果有書寫不夠規范之處請告知謝謝)

代碼結構:

  

數據庫視圖:

  

  0.       開關數據庫連接

      優先於四大操作的存在,每次用戶操作之前開啟,每次用戶操作之后關閉

        /// <summary>
        /// 開啟數據庫
        /// </summary>
        private void openCon() {
            string str_con = "server=(LocalDB)\\v11.0;database=master;integrated security=true";
            con = new SqlConnection(str_con);
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
                return;
            }
            if(con.State==ConnectionState.Broken){
                con.Close();
                con.Open();
            }
        }

        /// <summary>
        /// 關閉數據庫
        /// </summary>
        private void closeCon() {
            if (con.State !=ConnectionState.Closed) {
                con.Close();
                con.Dispose();
            }
        }

 

  1.   查
    1.   根據id查詢數據庫中是否存在對應數據,有則返回,沒有則提示
    2.         #region btn_查詢
              private void btn_check_Click(object sender, RoutedEventArgs e)
              {
                  openCon();
                  //查詢是否有id
                  if (tb_id.Text.Trim() != "")
                  {
                      string sql_cmd = "select userName,cardType from tb_card where cardID='" + tb_id.Text.Trim() + "'";
                      //可以試試用open直接返回SqlConnection對象,然后查詢暫時不封裝
                      using (cmd = new SqlCommand(sql_cmd, con))
                      {
                          using (SqlDataReader reader = cmd.ExecuteReader())
                          {
                              if (reader.Read())
                              {
                                  tb_name.Text = reader.GetString(0);
                                  tb_type.Text = reader.GetString(1);
                              }
                              else
                              {
                                  MessageBox.Show("查詢失敗");
                              }
                          }
                      }
                  }
                  else
                  {
                      MessageBox.Show("id輸入框不得為空");
                  }
                  closeCon();
              } 
              #endregion

       

  2.       增
    1.   檢查是否存在id,不存在則添加
    2.         #region btn_添加
              private void btn_add_Click(object sender, RoutedEventArgs e)
              {
                  openCon();
                  if (tb_id.Text.Trim() != "" && tb_name.Text.Trim() != "" && tb_type.Text.Trim() != "")
                  {
                      try
                      {
                          //查詢是否有id
                          string cmd_check = "select userName,cardType from tb_card where cardID='" + tb_id.Text.Trim() + "'";
                          using (cmd = new SqlCommand(cmd_check, con))
                          {
                              using (SqlDataReader reader = cmd.ExecuteReader())
                              {
                                  if (reader.Read())
                                  {
                                      MessageBox.Show("數據庫中已有此卡信息,無法添加");
                                      return; //有重復就退出不處理
                                  }
                              }
                          }
                          //插入
                          string cmd_add = String.Format("insert into tb_card(cardID,userName,cardType) values ({0},{1},{2})",
                              "\'" + tb_id.Text.Trim() + "\'", "N\'" + tb_name.Text.Trim() + "\'", "\'" + tb_type.Text.Trim() + "\'");
                          using (cmd = new SqlCommand(cmd_add, con))
                          {
                              if (cmd.ExecuteNonQuery() != -1)
                              {
                                  MessageBox.Show("添加成功");
                              }
                          }
                      }
                      catch (Exception ex)
                      {
                          MessageBox.Show("添加失敗,詳細信息:" + ex.ToString());
                      }
                  }
                  else
                  {
                      MessageBox.Show("信息不得為空");
                  }
                  closeCon();
              } 
              #endregion

       

  3.       改
    1.   檢測是否存在id,若存在則修改,不存在則告知用戶
    2.         #region btn_更新
              private void btn_update_Click(object sender, RoutedEventArgs e)
              {
                  openCon();
                  if (tb_id.Text.Trim() != "" && tb_name.Text.Trim() != "" && tb_type.Text.Trim() != "")
                  {
                      try
                      {
                          //查詢id是否存在
                          string cmd_check = "select userName,cardType from tb_card where cardID='" + tb_id.Text.Trim() + "'";
                          using (cmd = new SqlCommand(cmd_check, con))
                          {
                              using (SqlDataReader reader = cmd.ExecuteReader())
                              {
                                  if (!reader.Read())
                                  {
                                      MessageBox.Show("數據庫中沒有此卡信息,無法修改");
                                      return;
                                  }
                              }
                          }
                          string cmd_update = String.Format("update tb_card set userName={0},cardType={1} where cardID={2}",
                                  "N\'" + tb_name.Text.Trim() + "\'", "\'" + tb_type.Text.Trim() + "\'", "\'" + tb_id.Text.Trim() + "\'");
                          using (cmd = new SqlCommand(cmd_update, con))
                          {
                              if(cmd.ExecuteNonQuery()!=-1){
                                  MessageBox.Show("更新成功");
                              }
                          }
                      }
                      catch (Exception ex)
                      {
                          MessageBox.Show("更新失敗,詳細信息:" + ex.ToString());
                      }
                  }
                  else
                  {
                      MessageBox.Show("信息不得為空");
                  }
                  closeCon();
              } 
              #endregion

       

  4.       刪
    1.   檢測id是否存在,存在則刪除該行,不存在則告知用戶
    2.         #region btn_刪除
              private void btn_delete_Click(object sender, RoutedEventArgs e)
              {
                  openCon();
                  if (tb_id.Text.Trim().Length != 0)
                  {
                      try
                      {
                          string cmd_check = "select * from tb_card where cardID='" + tb_id.Text.Trim() + "'";
                          using (cmd = new SqlCommand(cmd_check, con))
                          {
                              using (SqlDataReader reader = cmd.ExecuteReader())
                              {
                                  if (!reader.Read())
                                  {
                                      MessageBox.Show("數據庫中沒有此卡信息,無法刪除");
                                      return;
                                  }
                              }
                          }
                          string cmd_delete = "delete from tb_card where cardID='" + tb_id.Text.Trim() + "'";
                          using (cmd = new SqlCommand(cmd_delete, con))
                          {
                              if (cmd.ExecuteNonQuery() != -1)
                              {
                                  MessageBox.Show("刪除成功");
                              }
                          }
                      }
                      catch (Exception ex)
                      {
                          MessageBox.Show("刪除失敗,詳細信息:" + ex.ToString());
                      }
                  }
                  else {
                      MessageBox.Show("id不得為空");
                  }
                  closeCon();
              } 
              #endregion

       

大家最喜歡的直接上代碼上完了,再說說我遇到的幾個坑:

  第一個就是一開始不知道為什么只能添加數字,連英文字母都不能添加,后來經過查看代碼中的sql命令發現是在有英文的地方沒有加上''將其包圍起來;

  第二個就是每次中文添加之后就亂碼,后來知道有nvarchar這種東西,然后再再添加中文的地方之前加個N,例如:七喜--》N'七喜',這樣就搞定了

  第三個就是cmd命令的執行,我一開始無論增刪改查都用ExecuteReader,但是覺得怪怪的,最后看stackoverflow的大神的答案和官方文檔才知道一般增刪改都用ExecuteNonQuery

最后發幾條學習過程中參考的鏈接:

  http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html  21分鍾 MySQL 入門教程

  https://msdn.microsoft.com/en-us/library/ms187752.aspx       微軟的數據庫類型參考

  http://www.w3school.com.cn/sql/sql_datatypes.asp           w3c的各種數據庫類型參考

  http://stackoverflow.com/questions/5349114/executenonquery     stackoverflow關於executenonquery使用

有神馬地方說錯或者有神馬意見歡迎提出謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM