NX二次開發-NX連接SqlServer數據庫(增刪改查)C#版


版本: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

 https://www.bilibili.com/video/BV1G7411n7Q3/?spm_id_from=333.788.videocard.9

Caesar盧尚宇

2020年9月17日

 


免責聲明!

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



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