生活随笔
收集整理的這篇文章主要介紹了
C# 学习笔记(19)操作SQL Server下
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C# 學習筆記(19)操作SQL Server下
ADO.net操作數據庫
這應該是比較老的技術了,以后有空的話學學 Linq
public static class MySqlHelper
{public static string conStr
;public static int ExecuteNonQuery(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
.ExecuteNonQuery();}}catch (Exception e
){throw e
;}}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
;}}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
;}}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
;}}
}
修改存儲過程
根據要實現的功能,創建修改對應的存儲過程和視圖,可以一遍寫程序一遍優化存儲過程和視圖
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
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操作數據庫
創建鏈接字符串
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#中
string sql
= "exec GetStudentInfoPage @page, @size";
SqlParameter page
= new SqlParameter("@page", _currentPage
);
SqlParameter pageSize
= new SqlParameter("@size", PageSize
);
查詢并顯示數據
int count
= (int)MySqlHelper
.ExecuteScalar(sql
);
DataTable dt
= MySqlHelper
.ExecuteTable(sql
, page
, pageSize
);
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
;
string sql
= "select * from provinceTable";
DataTable dt
= MySqlHelper
.ExecuteTable(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 {string sql
= "select count(*) from studentInfoTable";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
= "exec GetStudentInfoPage @page, @size";SqlParameter page
= new SqlParameter("@page", _currentPage
);SqlParameter pageSize
= new SqlParameter("@size", PageSize
);DataTable dt
= MySqlHelper
.ExecuteTable(sql
, page
, pageSize
);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);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 void 增
ToolStripMenuItem_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 void 刪
ToolStripMenuItem_Click(object sender
, EventArgs e
){foreach (DataGridViewRow item
in dataGridViewSQL
.SelectedRows
){string sql
= "delete from studentTable where studentTable.id = @id";SqlParameter id
= new SqlParameter("@id", item
.Cells
[0].Value
);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 查詢數據庫 獲取省份和班級信息string sql
= "select * from provinceTable";DataTable dt
= MySqlHelper
.ExecuteTable(sql
);cmbProvince
.DisplayMember
= "province";cmbProvince
.DataSource
= dt
;sql
= "select * from gradeTable";gradeDT
= MySqlHelper
.ExecuteTable(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";SqlParameter id
= new SqlParameter("@id", studentID
);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
;}private void cmbProvince_SelectedIndexChanged(object sender
, EventArgs e
){string sql
= "exec GetCityInfo @provinceName";SqlParameter provinceName
= new SqlParameter("@provinceName", cmbProvince
.Text
);cityDT
= MySqlHelper
.ExecuteTable(sql
, provinceName
);cmbCity
.DisplayMember
= "cityName";cmbCity
.DataSource
= cityDT
;}private void btnAdd_Click(object sender
, EventArgs e
){string sql
= "insert into studentTable(gradeID, name, gender, cityID, address) Values(@gradeID, @name, @gender, @cityID, @address)";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
){string sql
= "update studentTable set gradeID = @gradeID, name = @name, gender = @gender, cityID = @cityID, address = @address where id = @id";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下的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。