使用軟件: Microsoft SQL Server 2012 Microsoft Visual Studio 2012 本文地址: http://www.cnblogs.com/go2bed/
參考資料: http://www.w3school.com.cn/ W3School http://blog.csdn.net/lvfeng19806001/article/details/8175153 WinForm控件縮寫 及其他。
經(jīng)驗(yàn)、注意與感悟:
comboBox1.DataSource = TypesDataSet.Tables[0]; comboBox1.ValueMember = "type"; //type是數(shù)據(jù)庫的列名。
獲取ComboBox 選中的值: comboBox.SelectedValue.ToString() 8.窗口間傳值,窗體的Show、Hide、Dispose、Application.Exit();等。 9.及其他。
源代碼就不貼了。程序和數(shù)據(jù)庫就不發(fā)了。
相關(guān)知識: SQL結(jié)構(gòu)化查詢語言(Structured Query Language),簡稱SQL(發(fā)音:/??s kju? ??l/ "S-Q-L") http://baike.baidu.com/view/595350.htm?fr=aladdin 百度百科
可以把 SQL 分為兩個(gè)部分:數(shù)據(jù)操作語言 (DML) 和 數(shù)據(jù)定義語言 (DDL)。 SQL (結(jié)構(gòu)化查詢語言)是用于執(zhí)行查詢的語法。但是 SQL 語言也包含用于更新、插入和刪除記錄的語法。 查詢和更新指令構(gòu)成了 SQL 的 DML 部分:
SQL 的數(shù)據(jù)定義語言 (DDL) 部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的鏈接,以及施加表間的約束。 SQL 中最重要的 DDL 語句:
selectSELECT LastName,FirstName FROM Persons "Persons" 表:
結(jié)果:
SELECT * FROM Persons 提示:星號(*)是選取所有列的快捷方式。
SELECT DISTINCT Company FROM Orders 對于一個(gè)列的重復(fù)數(shù)據(jù),僅輸出一次。即各個(gè)不同。 distinct adj. 有區(qū)別的
Where如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語句。 語法SELECT 列名稱 FROM 表名稱 WHERE 列 運(yùn)算符 值 下面的運(yùn)算符可在 WHERE 子句中使用:
注釋:在某些版本的 SQL 中,操作符 <> 可以寫為 !=。 注意: 對于SQL server,可以使用 != 。 此處等于號使用 = 而不是 ==。
SQL 使用單引號來環(huán)繞文本值(大部分?jǐn)?shù)據(jù)庫系統(tǒng)也接受雙引號)。如果是數(shù)值,請不要使用引號。
AND 和 OR 可在 WHERE 子語句中把兩個(gè)或多個(gè)條件結(jié)合起來。 SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter' SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter' SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'
ORDER BY 語句用于根據(jù)指定的列對結(jié)果集進(jìn)行排序。ORDER BY 語句默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序。 如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用 DESC 關(guān)鍵字。 desc abbr. 降序排列(descend 的縮寫) descend 英 [d?'send] 美 [d?'s?nd] vi. 下降;下去;下來;遺傳;屈尊 vt. 下去;沿…向下
ORDER 例子4個(gè): 實(shí)例 1 以字母順序顯示公司名稱: SELECT Company, OrderNumber FROM Orders ORDER BY Company 結(jié)果:
實(shí)例 2 以字母順序顯示公司名稱(Company),并以數(shù)字順序顯示順序號(OrderNumber): SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber 結(jié)果:
實(shí)例 3 以逆字母順序顯示公司名稱: SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC 結(jié)果:
實(shí)例 4 以逆字母順序顯示公司名稱,并以數(shù)字順序顯示順序號: SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC ASC 代表升序排序,從小到大
結(jié)果:
注意:在以上的結(jié)果中有兩個(gè)相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時(shí),第二列是以升序排列的。如果第一列中有些值為 nulls 時(shí),情況也是這樣的。
INSERT INTO 語句INSERT INTO 語句用于向表格中插入新的行。 語法 INSERT INTO 表名稱 VALUES (值1, 值2,....) 我們也可以指定所要插入數(shù)據(jù)的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) 注: 在數(shù)據(jù)后加大寫N,強(qiáng)制保存為Unicode格式。適用于漢字等。
Update 語句Update 語句用于修改表中的數(shù)據(jù)。 語法: UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值 注: SET 后可以加多個(gè)列,用英文逗號隔開。
DELETE 語句DELETE 語句用于刪除表中的行。 語法 刪除某一行: DELETE FROM 表名稱 WHERE 列名稱 = 值 刪除所有行: 可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的: DELETE FROM table_name 或者: DELETE * FROM table_name
Microsoft Access、MySQL 以及 SQL Server 所使用的數(shù)據(jù)類型和范圍Microsoft Access 數(shù)據(jù)類型
MySQL 數(shù)據(jù)類型在 MySQL 中,有三種主要的類型:文本、數(shù)字和日期/時(shí)間類型。 Text 類型:
Number 類型:
* 這些整數(shù)類型擁有額外的選項(xiàng) UNSIGNED。通常,整數(shù)可以是負(fù)數(shù)或正數(shù)。如果添加 UNSIGNED 屬性,那么范圍將從 0 開始,而不是某個(gè)負(fù)數(shù)。 Date 類型:
* 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它們的工作方式很不同。在 INSERT 或 UPDATE 查詢中,TIMESTAMP 自動(dòng)把自身設(shè)置為當(dāng)前的日期和時(shí)間。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。 SQL Server 數(shù)據(jù)類型Character 字符串:
Unicode 字符串:
Binary 類型:
Number 類型:
Date 類型:
其他數(shù)據(jù)類型:
關(guān)于SQL連接、數(shù)據(jù)的類參見 http://baike.baidu.com/view/159519.htm?fr=aladdin DataSetDataSet是ADO.NET的中心概念??梢园袲ataSet當(dāng)成內(nèi)存中的數(shù)據(jù)庫,DataSet是不依賴于數(shù)據(jù)庫的獨(dú)立數(shù)據(jù)集合。所謂獨(dú)立,就是說,即使斷開數(shù)據(jù)鏈路,或者關(guān)閉數(shù)據(jù)庫,DataSet依然是可用的,DataSet在內(nèi)部是用XML來描述數(shù)據(jù)的,由于XML是一種與平臺無關(guān)、與語言無關(guān)的數(shù)據(jù)描述語言,而且可以描述復(fù)雜關(guān)系的數(shù)據(jù),比如父子關(guān)系的數(shù)據(jù),所以DataSet實(shí)際上可以容納具有復(fù)雜關(guān)系的數(shù)據(jù),而且不再依賴于數(shù)據(jù)庫鏈路。 在實(shí)際應(yīng)用中,DataSet使用方法一般有三種: (1) 把數(shù)據(jù)庫中的數(shù)據(jù)通過DataAdapter對象填充DataSet。 (2) 通過DataAdapter對象操作DataSet實(shí)現(xiàn)更新數(shù)據(jù)庫。 (3) 把XML數(shù)據(jù)流或文本加載到DataSet。 DataAdapterDataSet對象表示數(shù)據(jù)源中數(shù)據(jù)的本地副本,它是Microsoft NET Framework的一個(gè)主要?jiǎng)?chuàng)新。DataSet對象本身可用來引用數(shù)據(jù)源,然而為了擔(dān)當(dāng)真正的數(shù)據(jù)管理工具,DataSet必須能夠與數(shù)據(jù)源交互。為了實(shí)現(xiàn)該功能,.NET提供了DataAdapter類。 DataAdapter表示一組 SQL 命令和一個(gè)數(shù)據(jù)庫連接,它們用于填充 DataSet和更新數(shù)據(jù)源。 操作使用帶SQL Server .NET數(shù)據(jù)提供程序的DataSet的步驟如下: (1)創(chuàng)建SqlConnection對象,連接到SQL Server數(shù)據(jù)庫。 (2)創(chuàng)建SqlDataAdapter對象。該對象包含能夠指向4個(gè)SqlCommand對象的屬性,這些對象指定SQL語句在數(shù)據(jù)庫中進(jìn)行SELECT、INSERT、DELETE和UPDATE等數(shù)據(jù)操作。 (3)創(chuàng)建包含一個(gè)或多個(gè)表的DataSet對象。 (4)使用SqlDataAdapter對象,通過調(diào)用Fill方法來填充DataSet表。SqlDataAdapter隱式執(zhí)行包含SELECT語句的SqlCommand對象。 (5)修改DataSet中的數(shù)據(jù)。可以通過編程方式來執(zhí)行修改,或者將DataSet綁定到用戶界面控件(例如DataGrid),然后在控件中更改數(shù)據(jù)。 (6)在準(zhǔn)備將數(shù)據(jù)更改返回?cái)?shù)據(jù)庫時(shí),可以使用SqlDataAdapter并調(diào)用Update方法。SqlDataAdapter對象隱式使用其SqlCommand對象對數(shù)據(jù)庫執(zhí)行INSERT、DELETE和UPDATE語句。 操作代碼SqlConnection sqlCon = new SqlConnection(ConnectionStr);
string readCmdStr = "SELECT " + columnName + " FROM " + tableName; SqlDataAdapter Adapter = new SqlDataAdapter(readCmdStr, sqlCon);
DataSet BooksDataSet = new DataSet(); Adapter.Fill(BooksDataSet);
sheet.DataSource = BooksDataSet.Tables[0]; sheet.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
sheet.Columns[0].Visible = false; sheet.Columns[1].HeaderText = "書名"; sheet.Columns[2].HeaderText = "作者"; sheet.Columns[3].HeaderText = "編號"; sheet.Columns[4].HeaderText = "類型"; sheet.Columns[5].HeaderText = "實(shí)際位置";
sqlCon.Close();
DataReaderDataReader對象只允許以只讀、順向的方式查看其中所存儲的數(shù)據(jù),提供一個(gè)非常有效率的數(shù)據(jù)查看模式,同時(shí)DataReader對象還是一種非常節(jié)省資源的數(shù)據(jù)對象。 DataReader對象可通過Command對象的ExecuteReader方法從數(shù)據(jù)源中檢索數(shù)據(jù)來創(chuàng)建。
示例(百度百科)//連接數(shù)據(jù)庫 SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=db_showHouse"; //打開連接 conn.Open(); SqlCommand cmd = new SqlCommand("select User_names from tb_User", conn); SqlDataReader drNew = cmd.ExecuteReader(); if (drNew.HasRows) { while (drNew.Read()) { MessageBox.Show(drNew[0].ToString()); } } drNew.Close();
我的代碼:SqlConnection sqlCon = new SqlConnection(ConnectionStr);
string checkCmdStr = "SELECT * FROM " + tableName; SqlCommand checkCmd = new SqlCommand(checkCmdStr,sqlCon); SqlDataReader reader = checkCmd.ExecuteReader(); bool isLoginSucceeded = false; while (reader.Read()) { if (Id == Convert .ToString( reader.GetValue(0) )&& Password == Convert.ToString( reader.GetValue(1))) { isLoginSucceeded = true; break; } } reader.Close(); sqlCon.Close();
if (isLoginSucceeded) { MessageBox.Show("登錄成功"); return true; } else { MessageBox.Show("登錄失敗,請檢查用戶名或密碼"); return false; }
SqlCommandhttp://baike.baidu.com/view/3574729.htm?fr=aladdin
SqlCommand cmd = new SqlCommand("insert into mynews value ('插入一條新數(shù)據(jù)')", con); Command對象的構(gòu)造函數(shù)的參數(shù)有兩個(gè),一個(gè)是需要執(zhí)行的SQL語句,另一個(gè)是數(shù)據(jù)庫連接對象。創(chuàng)建Command對象后,就可以執(zhí)行SQL命令,執(zhí)行后完成并關(guān)閉數(shù)據(jù)連接,示例代碼如下所示。 cmd.ExecuteNonQuery(); //執(zhí)行SQL命令 con.Close(); //關(guān)閉連接
我的代碼:SqlConnection sqlCon = new SqlConnection(ConnectionStr);
//只有在SQL語句, ‘’前加上大寫 N,才能使?jié)h字正確添加。表示Unicode形式。數(shù)字,英文可以不加。 string insertStr = "INSERT INTO Books (bookName, bookAuthor, bookNumber, bookType, bookLocation) VALUES (N'" + bookName + "',N'" + bookAuthor + "',N'" + bookNumber + "',N'" + bookType + "',N'" + bookLocation + "')"; SqlCommand insertCmd = new SqlCommand(insertStr, sqlCon); int LineInfluence = insertCmd.ExecuteNonQuery(); //執(zhí)行并返回影響行數(shù) if (LineInfluence == 1) { MessageBox.Show("添加成功"); SQLSelect(sheet); } else { MessageBox.Show("添加失敗"); }
SqlCommand和SqlDataAdapter的區(qū)別SqlCommand對應(yīng)DateReader SqlDataAdapter對應(yīng)DataSet SqlCommand的執(zhí)行效率比較高,但不靈活,功能也有限 SqlDataAdapter的效率要低點(diǎn),它是連接的,可隨時(shí)更新數(shù)據(jù),功能強(qiáng)大。 很多編程用其中一種就可以了。 SqlCommand是C#中與Sql數(shù)據(jù)庫打交道的對象,幾乎所有的Sql數(shù)據(jù)庫操作都需要使用該對象來實(shí)現(xiàn),但其功能有限,只是簡單的實(shí)現(xiàn)了與Sql數(shù)據(jù)庫的接口而已; SqlDataAdapter是一個(gè)功能強(qiáng)大的SqL數(shù)據(jù)適配器,也用于操作Sql數(shù)據(jù)庫,但它的操作都要通過SqlCommand來實(shí)現(xiàn)(有一個(gè)屬性對象的類型就是SqlCommand),也就是說,可以把SqlDataAdapter看作是一個(gè)把一些特殊功能封裝了、增強(qiáng)了的SqlCommand! adapter是和dataset打交道的,command不能直接與dataset打交道,要通過adapter. adapter的定義是基于command的,當(dāng)然也可以之間在定義adapter的時(shí)候?qū)懭雜ql語句和connection對象 如<BR>dim ada as new sqlclient.sqladapter(select * from stu,conn1)<BR><BR>也可以這么寫 dim com1 as new sqlclient.sqlcommand(select * from stu,conn1)<BR> dim ada as new sqlclient.sqladapter(com1)<BR> 想要把數(shù)據(jù)顯示出來就不得不用到adapter來給dataset傳值,而command不能直接傳值給dataset 可以這樣理解: DataSet用來裝表的集合,里面可以裝從SqlDataAdapter中返回的一系列的DataTable 如果返回的有多張表,那么我們可以通過索引的方式來找到想要的表:DataTable dt = ds.Tables[0];或DataTable dt = ds.Tables["products"]; DataSet可以直接做為數(shù)據(jù)控件的數(shù)據(jù)源,也可以從中獲取表或表的視圖來做為數(shù)據(jù)源.如: this.DataList1.DataSource = dt; this.DataList2.DataSource = dt.Tables[0]; this.Datalist3.DataSource = dt.Tables[0].DefaultView; 這三句的效果都是一樣的. SqlDataAdapter是針對于SQL數(shù)據(jù)庫的一個(gè)數(shù)據(jù)適配器,對應(yīng)的還有OledbDataAdapter等等,它起著牽線搭橋的作用,我們可以用它來創(chuàng)建或是執(zhí)行一個(gè)數(shù)據(jù)庫操作命令,并將返回的結(jié)果集填充到DataSet中去.
WinForm控件縮寫控件名稱 縮寫 Buttom按鈕 Btn CheckBox復(fù)選框 Chk ColumnHeader視圖列表頭 Col ComboBox組合框 Cbo ContextMenu快捷菜單 Ctm DataGrid數(shù)據(jù)網(wǎng)格控件 Dg DataGridView數(shù)據(jù)網(wǎng)格視圖控件 Dgv DteTimePicker時(shí)間輸入框 Dtp DomainUpDown數(shù)值框 Dud Form窗體 Frm GroupBox 組合框 Grp HscrollBar水平滾動(dòng)條 Hsb ImageList圖標(biāo)列表 Img Label文本標(biāo)簽 Lbl LinkLabel列表框 Lbl ListBox列表框 Lst ListView視圖列表 Lvw Menu菜單 Menu MenuItem菜單項(xiàng) Menu NumericUpDown數(shù)值框 Nud Panel面板 Pnl PictureBox圖片框 Pic ProgressBar進(jìn)度條 Prg RadioButton單選框按鈕 Rdo Spliter拆分條 Spl StatusBar狀態(tài)欄 Stu StatusBarPanel狀態(tài)欄區(qū)域 Stupnl StatusStrip狀態(tài)欄 Stu TabControl分頁控件 Tab TabPage分頁標(biāo)簽頁面 Page TextBox文本框 Txt Timer定時(shí)器 Tmr ToolBar工具條 Tbr ToolStrip工具欄 Tsp TooStripButton工具欄按鈕 tspBtn ToolStripComboBox工具欄下拉組合框 tspCbo ToolStripDropDownMenu工具欄菜單項(xiàng)目 tspMenu ToolStripLable工具欄靜態(tài)文本 tspLbl ToolStripProgressBar工具欄進(jìn)度條 tspPrg ToolStripTextBox工具欄文本框 Tsptxt TreeView樹狀視圖列表 Tvw VscrollBar垂直滾動(dòng)條 Vsb WebBrowSer瀏覽器控件 Wb
|
|