ASP.NET接口

1.安装Visual Studio 2019

微软官网下载并安装Visual Studio 2019

2.新建Web网站

  1. 打开Visual Studio 2019,在搜索框中输入asp,选择如下选项。IMG

  2. 配置项目信息,单击新建。IMG

  3. 创建空项目。IMG

3.添加库类

  1. 显示所有文件,单击小红框内的按钮。 IMG

    IMG

  2. 拷贝Nuxsql.dll和Mono.Security.dll

    将Nuxsql.dll和Mono.Security.dll拷贝到项目的bin目录文件夹下。

  3. 添加库文件

    在项目中,右键“Bin”=>“添加”=>“现有项”,选择Nuxsql.dll和Mono.Security.dll,单击添加。

  4. 添加引用

    在项目中,右键单击“引用”=>“添加应用”=>浏览选中Nuxsql.dll和Mono.Security.dll,单击确定。IMG

4.添加UXDB.cs接口类

  1. 新增App_Code

    右键“项目名称”,选择“添加”=>“添加APS.NET”=>“App_Code”。IMG

  2. 新建UXDB.cs

    App_Code下新建UXDB.cs,右键“App_Code”=>“添加”=>“添加新项”=>选择Visual C#的类=>修改文件名UXDB.cs,单击添加。IMGIMG

  3. 添加UXDB.cs的代码,如下所示。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    //using System.Windows.Forms;
    using System.Data;
    using Nuxsql;
    public class UXDB
    {
        DataSet DS;
        bool ECode;
        string ErrString;
        NuxsqlConnection Conn = new NuxsqlConnection();
        public UXDB(string ServerName, string ServerPort, string DBName, string UserName, string Pwd)
        {
            ECode = false;
            Conn.ConnectionString = "Server=" + ServerName + ";Port=" + ServerPort + ";User Id=" + UserName + ";Password=" + Pwd + ";Database=" + DBName;
            try
            {
                Conn.Open();
            }
            catch (Exception e)
            {
                ECode = true;
                ErrString = e.Message;
            }
        }
        public DataSet GetRecordSet(string sql)
        {
            NuxsqlCommand sqlCmd = new NuxsqlCommand();
            sqlCmd.Connection = Conn;
            sqlCmd.CommandText = sql;
            try
            {
                NuxsqlDataAdapter adp = new NuxsqlDataAdapter(sqlCmd);
                DS = new DataSet();
                adp.Fill(DS);
            }
            catch (Exception e)
            {
                ErrString = e.Message;
                ECode = true;
                return null;
            }
            return DS;
        }
        public int ExecuteSQLScalar(string Sqls)
        {
            string s;
            NuxsqlCommand sqlCmd = new NuxsqlCommand();
            sqlCmd.Connection = Conn;
            sqlCmd.CommandText = Sqls;
            sqlCmd.CommandType = CommandType.Text;
            try
            {
                s = sqlCmd.ExecuteScalar().ToString();
            }
            catch (Exception e)
            {
                ErrString = e.Message;
                ECode = true;
                return -1;
            }
            return (int.Parse(s));
        }
        public string ExecuteSQLScalarTOstring(string Sqls)
        {
            string s;
            NuxsqlCommand sqlCmd = new NuxsqlCommand();
            sqlCmd.Connection = Conn;
            sqlCmd.CommandText = Sqls;
            sqlCmd.CommandType = CommandType.Text;
            try
            {
                s = sqlCmd.ExecuteScalar().ToString();
            }
            catch (Exception e)
            {
                ErrString = e.Message;
                ECode = true;
                return "-1";
            }
            return s;
        }
        public string ExecuteSQLWithTrans(string Sqls)
        {
            string s;
            NuxsqlTransaction myTrans;
            myTrans = Conn.BeginTransaction();
            NuxsqlCommand sqlCmd = new NuxsqlCommand();
            sqlCmd.Connection = Conn;
            sqlCmd.CommandText = Sqls;
            sqlCmd.CommandType = CommandType.Text;
            sqlCmd.Transaction = myTrans;
            sqlCmd.ExecuteNonQuery();
            //Sqls="SELECT @@IDENTITY AS ID";  
            sqlCmd.CommandText = Sqls;
            try
            {
                s = sqlCmd.ExecuteScalar().ToString();
            }
            catch (Exception e)
            {
                ErrString = e.Message;
                ECode = true;
                myTrans.Commit();
                return "";
            }
            myTrans.Commit();
            return (s);
        }
        public void ExecuteSQL(string Sqls)
        {
            NuxsqlCommand sqlCmd = new NuxsqlCommand();
            sqlCmd.Connection = Conn;
            sqlCmd.CommandText = Sqls;
            sqlCmd.CommandType = CommandType.Text;
            try
            {
                sqlCmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                ErrString = e.Message;
                ECode = true;
            }
        }
        public NuxsqlDataReader DBDataReader(string Sqls)
        {
            NuxsqlCommand sqlCmd = new NuxsqlCommand();
            sqlCmd.Connection = Conn;
            sqlCmd.CommandText = Sqls;
            sqlCmd.CommandType = CommandType.Text;
            try
            {
                return sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception e)
            {
                ErrString = e.Message;
                ECode = true;
                return null;
            }
        }
        public void DBClose()
        {
            try
            {
                Conn.Close();
            }
            catch (Exception e)
            {
                ErrString = e.Message;
                ECode = true;
            }
        }
        public bool ErrorCode()
        {
            return ECode;
        }
        public string ErrMessage()
        {
            return ErrString;
        }
        ~UXDB()
        {
        }
    }
    

5.创建窗体

  1. 新建Default.aspx

    右键“项目名称”,“添加”=>“添加新项”=>“Visual C#”=>“Web窗体”,单击添加。

    注意 文件名必须为Default.aspx,在后面的编译过程中类名和文件名必须保持一致。IMG

  2. Default.aspx文件中添加测试代码

    Default.aspx.cs代码如下所示。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Nuxsql;
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //added by qinglong.ou
            //NuxDB myDb = new NuxDB("localhost", "5432", "postgres", "postgres", "123456");
            UXDB myDb = new UXDB("192.168.1.82", "5432", "test", "uxdb", "123456");
            string retStr = "";
            string testSql = "select * from student";
            NuxsqlDataReader reader = myDb.DBDataReader(testSql);
            // 判断数据是否读到尾. 
            while (reader.Read())
            {
                //控制台输入 
                //string temp = String.Format("{0},{1},{2},{3},{4}", reader[0], reader[1], reader[2], reader[3], reader[4]);
                string temp = String.Format("{0},{1},{2},{3}", reader[0], reader[1], reader[2], reader[3]);
                //retStr += temp + "<>";
                retStr += temp + "\n";
            }
            System.Diagnostics.Debug.WriteLine("student\n" + retStr);
            Console.WriteLine(retStr);
            // 一定要关闭 reader 对象. 
            reader.Close();
        }
    }    
    

6.运行结果

右键“项目名称”=>“生成网站”,启动调试,查看即时窗口输出。

运行结果如下显示时asp.net连接使用uxdb成功,显示student表的数据与uxdb数据库中查看结果一致。 IMG

IMG

7.使用分析说明

创建uxdb端的student表。

create table student(
        sno int primary key not null,
        sname varchar(20),
        sage int,
        ssex varchar(6)
    );
    begin;
    insert into student values(1001,'张三',15,'女');
    insert into student values(1002,'李四',16,'男');
    insert into student values(1003,'王五',15,'男');
    insert into student values(1004,'赵六',14,'女');
    insert into student values(1005,'马七',16,'男');
    commit;

UXDB myDb = new UXDB("IP", "port", "db", "user","key"),uxdb-server所在机器IP为192.168.1.82,端口port为52025,所连接db为test,用户user为uxdb,密码为123456