版本:NX9+VS2012+SqlServer2008r2
以前我寫過一個NX連線MySQL資料庫(增刪改查)的文章https://www.cnblogs.com/nxopen2018/p/12297590.html
這次寫一下,NX連線SqlServer資料庫(增刪改查)C#版,使用了ADO.NET技術。
C++版的過一段在來寫
其實會一種,在學下一種就容易很多了,萬物是相通的,會SQL語句,在知道各個資料庫開放的增刪改查的API就可以基本使用了。
1.開啟SqlServer2008r2,新建一個資料庫,新建一張表。
如圖所示,本機安裝了SqlServer2008r2,使用localhost登入介面。
新建一個資料庫和一張表(不會建,自己百度)
2.新建一個NX C#專案,連線資料庫
2.1.引入名稱空間
using System.Data.SqlClient;
2.2.在Main入口函式處新增如下程式碼
//建立資料庫連線字串 string SqlStr = "Server=localhost;User Id=sa;Pwd=123456;DataBase=MyData"; SqlConnection con = new SqlConnection(SqlStr);//建立資料庫連線物件 con.Open();//開啟資料庫連線 if (con.State == System.Data.ConnectionState.Open)//判斷連線是否開啟 { theUfSession.Ui.DisplayMessage("SQL Server資料庫連線開啟!",1); con.Close();//關閉資料庫連線 } if (con.State == System.Data.ConnectionState.Closed)//判斷連線是否關閉 { theUfSession.Ui.DisplayMessage("SQL Server資料庫連線關閉!", 1); }
2.3.演示
3.增加資料
3.1先在SqlServer裡寫一遍SQL語句。
use MyData insert into student(學號,姓名) values(1,'張三')
執行後結果如下(怎麼在SqlServer裡寫SQL語句,以及怎麼執行,自己百度)
3.2去NX C#專案裡寫如下程式碼
//建立資料庫連線物件 string SqlStr = "Server=localhost;User Id=sa;Pwd=123456;DataBase=MyData"; SqlConnection con = new SqlConnection(SqlStr);//建立資料庫連線物件 string strsql = "insert into student(學號,姓名) values(2,李四)";//定義SQL語句 SqlCommand comm = new SqlCommand(strsql, con);//建立SqlCommand物件 if (con.State == System.Data.ConnectionState.Closed)//判斷連線是否關閉 { con.Open();//開啟資料庫連線 } //判斷ExecuteNonQuery方法返回的引數是否大於0,大於0表示新增成功 if (Convert.ToInt32(comm.ExecuteNonQuery()) > 0) { theUfSession.Ui.DisplayMessage("新增成功!",1); } else { theUfSession.Ui.DisplayMessage("新增失敗!", 1); } con.Close();//關閉資料庫連線
3.3演示
4.刪除資料
4.1先在SqlServer裡寫一遍SQL語句。
delete from student where 學號 = 1
4.2去NX C#專案中新增程式碼
//建立資料庫連線物件 string SqlStr = "Server=localhost;User Id=sa;Pwd=123456;DataBase=MyData"; SqlConnection con = new SqlConnection(SqlStr);//建立資料庫連線物件 string strsql = "delete from student where 學號 = 1";//定義SQL語句 SqlCommand comm = new SqlCommand(strsql, con);//建立SqlCommand物件 if (con.State == System.Data.ConnectionState.Closed)//判斷連線是否關閉 { con.Open();//開啟資料庫連線 } //判斷ExecuteNonQuery方法返回的引數是否大於0,大於0表示新增成功 if (Convert.ToInt32(comm.ExecuteNonQuery()) > 0) { theUfSession.Ui.DisplayMessage("新增成功!",1); } else { theUfSession.Ui.DisplayMessage("新增失敗!", 1); } con.Close();//關閉資料庫連線
4.3演示
5.修改資料
5.1先在SqlServer裡寫一遍SQL語句。
UPDATE student SET 姓名 = '王五' WHERE 學號 = 1
如果有多個where條件的,可以這樣寫,中間用AND連線
UPDATE student SET 姓名 = '王五' WHERE 學號 = 1 AND 學科 = '數學'
5.2去NX C#專案中新增程式碼
//建立資料庫連線物件 string SqlStr = "Server=localhost;User Id=sa;Pwd=123456;DataBase=MyData"; SqlConnection con = new SqlConnection(SqlStr);//建立資料庫連線物件 string strsql = "UPDATE student SET 姓名 = '王五' WHERE 學號 = 1";//定義SQL語句 SqlCommand comm = new SqlCommand(strsql, con);//建立SqlCommand物件 if (con.State == System.Data.ConnectionState.Closed)//判斷連線是否關閉 { con.Open();//開啟資料庫連線 } //判斷ExecuteNonQuery方法返回的引數是否大於0,大於0表示新增成功 if (Convert.ToInt32(comm.ExecuteNonQuery()) > 0) { theUfSession.Ui.DisplayMessage("新增成功!",1); } else { theUfSession.Ui.DisplayMessage("新增失敗!", 1); } con.Close();//關閉資料庫連線
5.3演示
6.查詢資料
6.1先在SqlServer裡寫一遍SQL語句。
查詢整個表的資料
如果表名是數字開頭的,執行的時候提示語法錯誤,要用[]中括號把名字括起來
例如
select * from [3DAAAA]
查詢滿足搜尋條件的資料
6.2去NX C#專案中新增程式碼(可以加try catch來捕獲錯誤資訊)
//建立資料庫連線物件 string SqlStr = "Server=localhost;User Id=sa;Pwd=123456;DataBase=MyData"; SqlConnection sqlcon = new SqlConnection(SqlStr); //建立SqlCommand物件 SqlCommand sqlcmd = new SqlCommand("select * from student", sqlcon); if (sqlcon.State == System.Data.ConnectionState.Closed)//判斷連線是否關閉 { sqlcon.Open();//開啟資料庫連線 } //使用ExecuteReader方法的返回值建立SqlDataReader物件 SqlDataReader sqldr = sqlcmd.ExecuteReader(); try { if (sqldr.HasRows)//判斷SqlDataReader物件中是否有資料 { while (sqldr.Read())//迴圈讀取SqlDataReader物件中的資料 { string aa = sqldr["學號"] + "," + sqldr["姓名"];//顯示讀取的詳細資訊 theUfSession.Ui.DisplayMessage(aa, 1); } } } catch (SqlException ex)//捕獲資料庫異常 { theUfSession.Ui.DisplayMessage(ex.ToString(), 1); } finally { sqldr.Close();//關閉SqlDataReader物件 sqlcon.Close();//關閉資料庫連線 }
或者
//建立資料庫連線物件 string SqlStr = "Server=localhost;User Id=sa;Pwd=123456;DataBase=MyData"; SqlConnection sqlcon = new SqlConnection(SqlStr); //建立SqlCommand物件 SqlCommand sqlcmd = new SqlCommand("select * from student where 學號 = 1", sqlcon); if (sqlcon.State == System.Data.ConnectionState.Closed)//判斷連線是否關閉 { sqlcon.Open();//開啟資料庫連線 } //使用ExecuteReader方法的返回值建立SqlDataReader物件 SqlDataReader sqldr = sqlcmd.ExecuteReader(); try { if (sqldr.HasRows)//判斷SqlDataReader物件中是否有資料 { while (sqldr.Read())//迴圈讀取SqlDataReader物件中的資料 { string aa = sqldr["學號"] + "," + sqldr["姓名"];//顯示讀取的詳細資訊 theUfSession.Ui.DisplayMessage(aa, 1); } } } catch (SqlException ex)//捕獲資料庫異常 { theUfSession.Ui.DisplayMessage(ex.ToString(), 1); } finally { sqldr.Close();//關閉SqlDataReader物件 sqlcon.Close();//關閉資料庫連線 }
6.3演示
或者
7.更多SQL語句用法請百度
7.1進入資料庫,建立一張表,新增一條資料
use db_EMS create table 倉庫 ( 倉庫編號 int, 倉庫號 varchar(50), 面積 int ) insert into 倉庫(倉庫編號,倉庫號) values(1,2)
8.補充
8.1.增加資料,可能有的時候需要獲取介面輸入框的內容,在寫到資料庫中。
這種情況下, 需要這樣寫:
用索引的方式
string strsql = "insert into student values('{0}','{1}','{2}','{3}','{4}','{5}','{6}')";//定義SQL語句
//建立資料庫連線物件 string SqlStr = "Server=localhost;User Id=sa;Pwd=123456;DataBase=MyData"; SqlConnection con = new SqlConnection(SqlStr);//建立資料庫連線物件 int One = 3; string Two = "豬八戒"; string strsql = "insert into student values('{0}','{1}')";//定義SQL語句 strsql = string.Format(strsql, One, Two); SqlCommand comm = new SqlCommand(strsql, con);//建立SqlCommand物件 if (con.State == System.Data.ConnectionState.Closed)//判斷連線是否關閉 { con.Open();//開啟資料庫連線 } //判斷ExecuteNonQuery方法返回的引數是否大於0,大於0表示新增成功 if (Convert.ToInt32(comm.ExecuteNonQuery()) > 0) { theUfSession.Ui.DisplayMessage("新增成功!", 1); } else { theUfSession.Ui.DisplayMessage("新增失敗!", 1); }
8.2遠端連線問題
以上的連線是指資料庫裝在客戶端本機上的,所以用localhost就可以連線
而實際上,不可能每個客戶端上都裝資料庫,應該是客戶端上裝我們開發的軟體程式,
後臺伺服器上裝資料庫。遠端連線資料庫。
這個時候需要做三件事,第一.用IP地址連線資料庫。第二.資料庫開啟遠端連線,設定埠。第三.保證兩臺電腦的地址可以ping的通。
參考資料
在與 SQL Server 建立連線時出現與網路相關的或特定於例項的錯誤。未找到或無法訪問伺服器。https://www.cnblogs.com/dzhf/p/7883577.html
C#連線SqlServer時連不起的情況的解決https://blog.csdn.net/wangjinyang_123/article/details/25073599?utm_source=blogxgwz8
配置SQLServer,允許遠端連線https://www.cnblogs.com/jian1125/p/10640478.html
更多學習資料嗶哩嗶哩一位技術up主的視訊課程
https://www.bilibili.com/video/BV1jT4y1J74z?from=search&seid=10893193146306536127
https://www.bilibili.com/video/BV1bK4y147KG/?spm_id_from=trigger_reload
Caesar盧尚宇
2020年9月17日