日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 学习笔记(19)操作SQL Server下

發布時間:2025/4/16 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 学习笔记(19)操作SQL Server下 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C# 學習筆記(19)操作SQL Server下

ADO.net操作數據庫

這應該是比較老的技術了,以后有空的話學學 Linq

/// <summary> /// 數據庫使用類 /// </summary> public static class MySqlHelper {/// <summary>/// 1.數據庫連接字符串/// </summary>public static string conStr;/// <summary>/// SQL 增 刪 改/// </summary>/// <param name="sql">sql命令</param>/// <param name="ps">sql參數</param>/// <returns></returns>public static int ExecuteNonQuery(string sql, params SqlParameter[] ps){try{//2.創建連接對象 using結束后會自動釋放資源using (SqlConnection conn = new SqlConnection(conStr)){//3.創建執行SQL語句的對象SqlCommand cmd = new SqlCommand(sql, conn);//4.編寫SQL語句cmd.Parameters.AddRange(ps);cmd.CommandTimeout = 1;//5.打開SQL連接conn.Open();//6.執行SQL語句return cmd.ExecuteNonQuery();}}catch (Exception e){throw e;}}/// <summary>/// SQL 查詢一行數據/// </summary>/// <param name="sql"></param>/// <param name="ps"></param>/// <returns></returns>public static object ExecuteScalar(string sql, params SqlParameter[] ps){try{using (SqlConnection conn = new SqlConnection(conStr)){SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.AddRange(ps);cmd.CommandTimeout = 1;conn.Open();return cmd.ExecuteScalar();}}catch (Exception e){throw e;}}/// <summary>/// SQL 查詢一塊數據,并把數據存放在一個表中/// </summary>/// <param name="sql">命令</param>/// <param name="ps">參數</param>/// <returns>內存中的表</returns>public static DataTable ExecuteTable(string sql, params SqlParameter[] ps){try{using (SqlConnection conn = new SqlConnection(conStr)){SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);adapter.SelectCommand.Parameters.AddRange(ps);adapter.SelectCommand.CommandTimeout = 1;DataTable dataTable = new DataTable();adapter.Fill(dataTable);return dataTable;}}catch (Exception e){throw e;}}/// <summary>/// SQL 查詢一塊數據/// </summary>/// <param name="sql"></param>/// <param name="ps"></param>/// <returns></returns>public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] ps){try{SqlConnection conn = new SqlConnection(conStr);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.AddRange(ps);cmd.CommandTimeout = 1;conn.Open();return cmd.ExecuteReader(CommandBehavior.CloseConnection);}catch(Exception e){throw e;}} }

修改存儲過程

根據要實現的功能,創建修改對應的存儲過程和視圖,可以一遍寫程序一遍優化存儲過程和視圖

--創建視圖 studentInfoTable create view studentInfoTable as select studentTable.id as 學生編號, studentTable.name as 姓名, genderTable.name as 性別, gradeTable.name as 班級, (provinceTable.province + cityTable.cityName + isNull(studentTable.address, '')) as 家庭地址 from studentTable inner join cityTable on cityTable.id = studentTable.cityID inner join provinceTable on cityTable.provinceID = provinceTable.id inner join genderTable on genderTable.id = studentTable.gender inner join gradeTable on gradeTable.id = studentTable.gradeID select * from studentInfoTable

--創建視圖 studentMinuteInfoTable create view studentMinuteInfoTable as select studentTable.id as 學生編號, studentTable.name as 姓名, genderTable.name as 性別, gradeTable.name as 班級, provinceTable.province as, cityTable.cityName as, studentTable.address as 詳細地址 from studentTable inner join cityTable on cityTable.id = studentTable.cityID inner join provinceTable on cityTable.provinceID = provinceTable.id inner join genderTable on genderTable.id = studentTable.gender inner join gradeTable on gradeTable.id = studentTable.gradeID select * from studentMinuteInfoTable

--獲取一頁學生信息 alter proc GetStudentInfoPage@pageIndex int, --要查詢的頁序號@pageSize int --頁大小 as beginselect * from (select ROW_NUMBER() over(order by 學生編號) as 行序號, * from studentInfoTable) as t1 where 行序號 between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize end exec GetStudentInfoPage 2, 2

--存儲過程 根據省名得到城市表 create proc GetCityInfo @provinceName nvarchar(10) as beginselect cityTable.id, cityName from cityTable inner join provinceTable on cityTable.provinceID = provinceTable.id where provinceTable.province = @provinceName end exec GetCityInfo '河北'

數據庫隨便填了一些數據,不完整

利用ADO.net操作數據庫

  • 創建鏈接字符串
  • //設置數據庫連接字符串 //Serever: 表示要連接的SQL Server 服務端所在的機器(可以是ip, 可以是hostname) . 代表本機 //Database: 數據庫名稱 //User Id: 用戶名 //Password: 密碼 //Connection Timeout: 鏈接超時時間 MySqlHelper.conStr = "Data Source = .;Database = TestDB; User Id = sa; Password= 12345678; Connection Timeout = 5;";
  • 編寫sql語句
  • 例如要查詢 studentInfoTable 表數據條數
    SQL語句為

    select count(*) from studentInfoTable

    c#中將其轉換成字符串即可

    string sql = "select count(*) from studentInfoTable";
  • 添加sql參數(非必要)
  • 如果SQL語句需要參數,例如查詢一頁學生數據
    SQL語句為

    exec GetStudentInfoPage 2, 2

    c#中

    //sql 語句 string sql = "exec GetStudentInfoPage @page, @size";//sql 語句參數 SqlParameter page = new SqlParameter("@page", _currentPage); SqlParameter pageSize = new SqlParameter("@size", PageSize);
  • 查詢并顯示數據
  • //執行不帶參 sql語句 int count = (int)MySqlHelper.ExecuteScalar(sql); //執行帶參 sql語句 DataTable dt = MySqlHelper.ExecuteTable(sql, page, pageSize);
    • 圖表中顯示查詢到的表
    //為GridView的列綁定數據源 也就是將dataGridViewSQL的列和 sql查出來表的列名綁定起來 dataGridViewSQL.Columns[0].DataPropertyName = "學生編號"; dataGridViewSQL.Columns[1].DataPropertyName = "姓名"; dataGridViewSQL.Columns[2].DataPropertyName = "性別"; dataGridViewSQL.Columns[3].DataPropertyName = "班級"; dataGridViewSQL.Columns[4].DataPropertyName = "家庭地址";//禁止自動創建列 dataGridViewSQL.AutoGenerateColumns = false;//綁定數據源 dataGridViewSQL.DataSource = dt;
    • combox中顯示查詢到的一列數據
    //sql 語句 string sql = "select * from provinceTable";//執行sql語句 DataTable dt = MySqlHelper.ExecuteTable(sql);//為combox的列綁定數據源 也就是將combox和 sql查出來表的列名綁定起來 cmbProvince.DisplayMember = "province"; //綁定數據源 cmbProvince.DataSource = dt;


    源碼地址 https://download.csdn.net/download/weixin_42378319/20681950

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace CSharp_SQL {public partial class Form1 : Form{int PageMax = 1;int PageSize = 3;int _currentPage = 1;int CurrentPage{get { return _currentPage; }set {//sql 語句 查詢行數string sql = "select count(*) from studentInfoTable";//執行sql語句PageMax = (int)MySqlHelper.ExecuteScalar(sql);PageMax = (PageMax + PageSize - 1) / PageSize;if (value < 1){_currentPage = PageMax;}else if(value > PageMax){_currentPage = 1;}else{_currentPage = value;}txbPage.Text = _currentPage.ToString()+"/"+PageMax.ToString();//sql 語句sql = "exec GetStudentInfoPage @page, @size";//sql 語句參數SqlParameter page = new SqlParameter("@page", _currentPage);SqlParameter pageSize = new SqlParameter("@size", PageSize);//執行sql語句DataTable dt = MySqlHelper.ExecuteTable(sql, page, pageSize);//為GridView的列綁定數據源 也就是將dataGridViewSQL的列和 sql查出來表的列名綁定起來dataGridViewSQL.Columns[0].DataPropertyName = "學生編號";dataGridViewSQL.Columns[1].DataPropertyName = "姓名";dataGridViewSQL.Columns[2].DataPropertyName = "性別";dataGridViewSQL.Columns[3].DataPropertyName = "班級";dataGridViewSQL.Columns[4].DataPropertyName = "家庭地址";//禁止自動創建列dataGridViewSQL.AutoGenerateColumns = false;//綁定數據源dataGridViewSQL.DataSource = dt;}}public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){//開啟表格的雙緩沖,避免閃爍MyDataGridViewDoubleBuffer.SetDoubleBuffered(dataGridViewSQL, true);//設置數據庫連接字符串//Serever: 表示要連接的SQL Server 服務端所在的機器(可以是ip, 可以是hostname) . 代表本機//Database: 數據庫名稱//User Id: 用戶名//Password: 密碼//Connection Timeout: 鏈接超時時間MySqlHelper.conStr = "Data Source = .;Database = TestDB; User Id = sa; Password= 12345678; Connection Timeout = 5;";CurrentPage = 1;}private void labFrontPage_Click(object sender, EventArgs e){CurrentPage -= 1;}private void labBackPage_Click(object sender, EventArgs e){CurrentPage += 1;}private void txbPage_TextChanged(object sender, EventArgs e){try{CurrentPage = int.Parse(txbPage.Text);}catch{}}private void txbPage_MouseDown(object sender, MouseEventArgs e){txbPage.SelectAll();}private voidToolStripMenuItem_Click(object sender, EventArgs e){FormSQL formSQL = new FormSQL((int)dataGridViewSQL.SelectedRows[0].Cells[0].Value, (string)dataGridViewSQL.SelectedRows[0].Cells[1].Value, (string)dataGridViewSQL.SelectedRows[0].Cells[2].Value, (string)dataGridViewSQL.SelectedRows[0].Cells[3].Value);formSQL.Text = "增/改數據";formSQL.ShowDialog();//刷新CurrentPage = CurrentPage;}private voidToolStripMenuItem_Click(object sender, EventArgs e){foreach (DataGridViewRow item in dataGridViewSQL.SelectedRows){//sql 語句string sql = "delete from studentTable where studentTable.id = @id";//sql 語句參數SqlParameter id = new SqlParameter("@id", item.Cells[0].Value);//執行sql語句DataTable dt = MySqlHelper.ExecuteTable(sql, id);//刷新CurrentPage = CurrentPage;}}} } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace CSharp_SQL {public partial class FormSQL : Form{int StudentID = 0;DataTable gradeDT, cityDT;public FormSQL(int studentID, string name, string gender, string grade){InitializeComponent();#region 查詢數據庫 獲取省份和班級信息//sql 語句string sql = "select * from provinceTable";//執行sql語句DataTable dt = MySqlHelper.ExecuteTable(sql);//為combox的列綁定數據源 也就是將combox和 sql查出來表的列名綁定起來cmbProvince.DisplayMember = "province";//綁定數據源cmbProvince.DataSource = dt;sql = "select * from gradeTable";//執行sql語句gradeDT = MySqlHelper.ExecuteTable(sql);//為combox的列綁定數據源 也就是將combox和 sql查出來表的列名綁定起來cmbStudentGrade.DisplayMember = "name";//綁定數據源cmbStudentGrade.DataSource = gradeDT;#endregiontxbStudentName.Text = name;if(gender == "男"){radMan.Checked = true;}else{radWoman.Checked = true;}cmbStudentGrade.Text = grade;//獲取學生地址信息sql = "select * from studentMinuteInfoTable where 學生編號 = @id";//sql 語句參數SqlParameter id = new SqlParameter("@id", studentID);//執行sql語句dt = MySqlHelper.ExecuteTable(sql, id);cmbProvince.Text = (string)dt.Rows[0].ItemArray[4];cmbCity.Text = (string)dt.Rows[0].ItemArray[5];if(dt.Rows[0].ItemArray[6] != System.DBNull.Value)txbStudentAddr.Text = (string)dt.Rows[0].ItemArray[6];StudentID = studentID;}/// <summary>/// 省變化時,市信息跟著變化/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void cmbProvince_SelectedIndexChanged(object sender, EventArgs e){//sql 語句string sql = "exec GetCityInfo @provinceName";//sql 語句參數SqlParameter provinceName = new SqlParameter("@provinceName", cmbProvince.Text);//執行sql語句cityDT = MySqlHelper.ExecuteTable(sql, provinceName);//為combox的列綁定數據源 也就是將combox和 sql查出來表的列名綁定起來cmbCity.DisplayMember = "cityName";//綁定數據源cmbCity.DataSource = cityDT;}private void btnAdd_Click(object sender, EventArgs e){//sql 語句string sql = "insert into studentTable(gradeID, name, gender, cityID, address) Values(@gradeID, @name, @gender, @cityID, @address)";//sql 語句參數SqlParameter gradeID = new SqlParameter("@gradeID", gradeDT.Rows[cmbStudentGrade.SelectedIndex].ItemArray[0]);SqlParameter name = new SqlParameter("@name", txbStudentName.Text);SqlParameter gender;if(radMan.Checked){gender = new SqlParameter("@gender", true);}else{gender = new SqlParameter("@gender", false);}SqlParameter cityID = new SqlParameter("@cityID", cityDT.Rows[cmbCity.SelectedIndex].ItemArray[0]);SqlParameter address = new SqlParameter("@address", txbStudentAddr.Text);MySqlHelper.ExecuteNonQuery(sql, gradeID, name, gender, cityID, address);this.Close();}private void btnUpdate_Click(object sender, EventArgs e){//sql 語句string sql = "update studentTable set gradeID = @gradeID, name = @name, gender = @gender, cityID = @cityID, address = @address where id = @id";//sql 語句參數SqlParameter id = new SqlParameter("@id", StudentID);SqlParameter gradeID = new SqlParameter("@gradeID", gradeDT.Rows[cmbStudentGrade.SelectedIndex].ItemArray[0]);SqlParameter name = new SqlParameter("@name", txbStudentName.Text);SqlParameter gender;if (radMan.Checked){gender = new SqlParameter("@gender", true);}else{gender = new SqlParameter("@gender", false);}SqlParameter cityID = new SqlParameter("@cityID", cityDT.Rows[cmbCity.SelectedIndex].ItemArray[0]);SqlParameter address = new SqlParameter("@address", txbStudentAddr.Text);MySqlHelper.ExecuteNonQuery(sql, gradeID, name, gender, cityID, address, id);this.Close();}} }

    總結

    以上是生活随笔為你收集整理的C# 学习笔记(19)操作SQL Server下的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。