• 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

    Caesar卢尚宇

    2020年9月17日

  • 相关阅读:
    软件工程个人作业01
    动手动脑
    大道至简感想终结篇
    课后作业
    反思
    课后作业
    不忘初心,方得始终
    课后作业
    沟通,让一切变得简单

  • 原文地址:https://www.cnblogs.com/nxopen2018/p/13687882.html
Copyright © 2020-2023  润新知