版本: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数据库连接开启!",);
con.Close();//关闭数据库连接
}
if (con.State == System.Data.ConnectionState.Closed)//判断连接是否关闭
{
theUfSession.Ui.DisplayMessage("SQL Server数据库连接关闭!", );
}

2.3.演示

3.增加数据

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

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

执行后结果如下(怎么在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()) > )
{
theUfSession.Ui.DisplayMessage("添加成功!",);
}
else
{
theUfSession.Ui.DisplayMessage("添加失败!", );
}
con.Close();//关闭数据库连接

3.3演示

4.删除数据

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

delete from student where 学号 = 

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()) > )
{
theUfSession.Ui.DisplayMessage("添加成功!",);
}
else
{
theUfSession.Ui.DisplayMessage("添加失败!", );
}
con.Close();//关闭数据库连接

4.3演示

5.修改数据

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

UPDATE student SET 姓名 = '王五' WHERE 学号 = 

如果有多个where条件的,可以这样写,中间用AND连接

UPDATE student SET 姓名 = '王五' WHERE 学号 =  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()) > )
{
theUfSession.Ui.DisplayMessage("添加成功!",);
}
else
{
theUfSession.Ui.DisplayMessage("添加失败!", );
}
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, );
}
}
}
catch (SqlException ex)//捕获数据库异常
{
theUfSession.Ui.DisplayMessage(ex.ToString(), );
}
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, );
}
}
}
catch (SqlException ex)//捕获数据库异常
{
theUfSession.Ui.DisplayMessage(ex.ToString(), );
}
finally
{
sqldr.Close();//关闭SqlDataReader对象
sqlcon.Close();//关闭数据库连接
}

6.3演示

或者

7.更多SQL语句用法请百度

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 = ;
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()) > )
{
theUfSession.Ui.DisplayMessage("添加成功!", );
}
else
{
theUfSession.Ui.DisplayMessage("添加失败!", );
}

8.2远程连接问题

以上的连接是指数据库装在客户端本机上的,所以用localhost就可以连接

而实际上,不可能每个客户端上都装数据库,应该是客户端上装我们开发的软件程序,

后台服务器上装数据库。远程连接数据库。

NX二次开发-NX访问SqlServer数据库(增删改查)C#版的更多相关文章

  1. NX二次开发-NX访问MySQL数据库(增删改查)

    版本:NX11+VS2013+MySQL5.6(x64)+SQLyog 1.新建一个NX项目(多字节) 2.设置VC++目录(调用MySQL的头文件,dll和lib库文件) 3.设置番茄助手 然后重启 ...

  2. SQLServer数据库增删改查

    一.数据库定义 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.数据库的操作分为两种形式:一种是直接在数据库管理工具图形化界面进行操作:一种是使用数据库脚本进行操作,数据库脚本可 ...

  3. C#学习笔记(3)——操作sqlserver数据库增删改查

    说明(2017-5-25 16:29:35): 1. VS2010,视图->服务器资源管理器->数据连接->右键添加连接->服务器名(本机可以用点)->选择数据库-> ...

  4. 数据库学习之数据库增删改查(另外解决Mysql在linux下不能插入中文的问题)(二)

    数据库增删改查 增加 首先我们创建一个数据库user,然后创建一张表employee create table employee( id int primary key auto_increment, ...

  5. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  6. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  7. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  8. MySQL数据库(增删改查语句)

    MySQL数据库(增删改查语句)一.登录数据库:---->  mysql -uroot -proot;(对应用户名和密码)二.SQL语句:    数据定义语言DDL  用来定义数据库.表.列,关 ...

  9. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

随机推荐

  1. C++用递归实现斐波那契数列

    [题目描述] 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和. 给出一个正整数a,要求菲波那契数列中第a个数是多少. [输入] 第1行是测试数据的组数n, ...

  2. VS2005 如何打开VS2008的工程 2009-06-24 20:22

    大家都碰到过用2005打开2008的工程吧.2008打开2005是没有问题,但是反过来呢,却不可以.当用2005打开2008时,看着工具提示要进行工程转换心里高兴吧,当转换后发现工程无法加载是不是很居 ...

  3. 41.4 Method Security方法安全性

    41.4.1 <global-method-security> 这个元素是为Spring Security beans上的安全方法添加支持的主要手段.可以通过使用注释(在接口或类级别定义) ...

  4. Python 读取word中表格数据、读取word修改并保存、替换word中词汇、读取word中每段内容,读取一段话中相同样式内容,理解Document中run

    from docx import Document path = r'D:\pywork\12' # word信息表所在文件夹 w = Document(path + '/' + 'word信息表.d ...

  5. python基础 - 切片

    今日学习内容 切片 取一个list或者tuple的部分数据是常见的操作 a = [1,2,3] 比如取第一个数我们可以用a[0]的方式,如果我们想取第一个和第二个就有点困难了,a[0-1]或者a[0] ...

  6. Markdown实验样例

    一级标题 二级标题 三级标题 重新开始一个段落 这是新的段落 斜体文本 粗体文本 粗斜体文本 下面是分隔线 删除线 下划线 脚注[1] 无序列表 第一项 嵌套元素1 嵌套元素2 第二项 嵌套元素1 嵌 ...

  7. 修改vsftpd的默认根目录/var/ftp/pub到另一个目录

    修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可: 加入如下几行: local_root=/var/www/html chroot_local_user=YES ano ...

  8. Spring Security自定义认证页面(动态网页解决方案+静态网页解决方案)--练气中期圆满

    写在前面 上一回我们简单分析了spring security拦截器链的加载流程,我们还有一些简单的问题没有解决.如何自定义登录页面?如何通过数据库获取用户权限信息? 今天主要解决如何配置自定义认证页面 ...

  9. SpringCloud系列之Nacos应用篇

    前言 原先项目是以SpringConfig作为项目配置中心组件,Eureka作为服务注册发现组件,基本上就是SpringCloud全家桶,Eureka已经停更,所以前期调研可替换方案,主流替换方案有C ...

  10. 使用Apache的反向代理会影响搜索引擎的收录和排名吗

    http://www.wocaoseo.com/thread-292-1-1.html 百度官方观点:Baiduspider对站点的抓取方式和普通用户访问一样,只要普通用户能访问到的内容,我们就能抓取 ...