版本: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登录界面。

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

新建一个数据库和一张表(不会建,自己百度)

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

 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.演示

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

3.增加数据

3.1先在SqlServer里写一遍SQL语句。

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

use MyData
insert into student(学号,姓名) values(1,'张三')

执行后结果如下(怎么在SqlServer里写SQL语句,以及怎么执行,自己百度)

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

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演示

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

4.删除数据

4.1先在SqlServer里写一遍SQL语句。

 NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

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演示

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

5.修改数据

5.1先在SqlServer里写一遍SQL语句。

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

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演示

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

6.查找数据

6.1先在SqlServer里写一遍SQL语句。

查询整个表的数据

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

 如果表名是数字开头的,执行的时候提示语法错误,要用[]中括号把名字括起来

例如

select * from [3DAAAA]

查询满足搜索条件的数据

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

 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演示

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

或者

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

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);
}

NX二次开发-NX连接SqlServer数据库(增删改查)C#版-LMLPHP

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日

09-18 12:14