首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unidata UniObjects for .NET -从修改后的表中将修改写回unidata

Unidata UniObjects for .NET -从修改后的表中将修改写回unidata
EN

Stack Overflow用户
提问于 2014-06-11 16:54:36
回答 2查看 723关注 0票数 2

在数据视图中调整内容之后,我尝试将数据写回Unidata上的文件中。

我尝试过基于下面代码的各种选项,但没有成功。

在foreach部分中,我想更新我的文件。该文件由10个单一值属性组成。

我尝试了fl.write(),但是得到了一个与写入空值有关的错误.

代码语言:javascript
复制
     try
        {
            DataTable modifiedTable = m_DS.Tables[0].GetChanges(DataRowState.Modified);
            if (modifiedTable.Rows.Count > 0)
            {
                U2Connection con = GetConnection();
                Console.WriteLine("Connected.................");
                UniSession lUniSession = con.UniSession;
                UniFile fl = lUniSession.CreateUniFile("myTableName");
                UniDynArray udr3 = new UniDynArray(lUniSession);

                foreach (DataRow item in modifiedTable.Rows)
                {

                }
                con.Close();
             }
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-11 17:59:12

您需要修改表中每一行值的UniDynArray (记录),然后将UniDynArray写入文件和特定的记录id:

代码语言:javascript
复制
for (Int32 i=0; i < modifiedTable.Rows.Count; i++)
{
    DataRow item = modifiedTable.Rows[i];
    //Modify each attribute in the record from the rows in the table
    udr3.Replace(i+1, (String)item[0]);
}
//Write the modified record to the file
fl.Write("MyRecordId", udr3);

获得空引用异常的原因是在调用fl.RecordIdfl.Record之前没有将值赋值给fl.Write()。正如您在上面看到的,我更喜欢使用接受记录id和记录数据作为参数的写方法的重载,而不是在UniFile实例上设置属性。

票数 2
EN

Stack Overflow用户

发布于 2014-06-12 15:17:11

感谢您使用UniObjects的U2工具包的.NET API (以前称为独立UO.NET)。

昨天(2014年6月10日),我们发布了U2工具包.NET v2.1.0。用于U2 v2.1.0的.NET工具包的主要特性是

  • 原生Visual集成

有关其他特性,请参阅此链接http://blog.rocketsoftware.com/2014/05/access-nosql-data-using-sql-syntax-u2-toolkit-net-v2-1-0-beta/

请使用SELECT和UPDATE尝试相同的代码(10个值属性)。关于您的信息,选择和更新后面的场景调用UniFile读写。这些示例是安装的一部分。转到这些目录。

C:\Program (X86)\\U2 .NET\U2数据库工具包

C:\Program (X86)\\U2 .NET\U2数据库工具包

选择

代码语言:javascript
复制
private static void Select()
    {
        try
        {
            Console.WriteLine(Environment.NewLine + "Start...");
            ConnectionStringSettingsCollection settings = ConfigurationManager.ConnectionStrings;
            ConnectionStringSettings cs = settings["u2_connection"];
            U2Connection lConn = new U2Connection();
            lConn.ConnectionString = cs.ConnectionString;
            lConn.Open();
            Console.WriteLine("Connected...");
            U2Command cmd = lConn.CreateCommand();

            //ID,FNAME,LNAME : Single Value
            //SEMESTER: Multi Value
            //COURSE_NBR,COURSE_GRD: MS


            cmd.CommandText = string.Format("SELECT ID,FNAME,LNAME,SEMESTER,COURSE_NBR,COURSE_GRD FROM STUDENT WHERE ID > 0 ORDER BY ID");

            U2DataAdapter da = new U2DataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            Console.WriteLine(Environment.NewLine);
            ds.WriteXml(Console.Out);
            lConn.Close();
            Console.WriteLine(Environment.NewLine + "End...");
            Console.WriteLine(SUCCESS_MSG);

        }
        catch (Exception e2)
        {
            string lErr = e2.Message;
            if (e2.InnerException != null)
            {
                lErr += lErr + e2.InnerException.Message;
            }
            Console.WriteLine(Environment.NewLine + lErr);
            Console.WriteLine(FAIL_MSG);
        }
    }

更新

代码语言:javascript
复制
private static void Update_Using_DataSet()
    {
        try
        {
            Console.WriteLine(Environment.NewLine + "Start...");
            ConnectionStringSettingsCollection settings = ConfigurationManager.ConnectionStrings;
            ConnectionStringSettings cs = settings["u2_connection"];
            U2Connection lConn = new U2Connection();
            lConn.ConnectionString = cs.ConnectionString;
            lConn.Open();
            Console.WriteLine("Connected...");
            U2Command cmd = lConn.CreateCommand();

            //ID,FNAME,LNAME : Single Value
            //SEMESTER: Multi Value
            //COURSE_NBR,COURSE_GRD: MS


            cmd.CommandText = string.Format("SELECT ID,FNAME,LNAME,SEMESTER,COURSE_NBR,COURSE_GRD FROM STUDENT WHERE ID={0} ORDER BY ID",ID);

            U2DataAdapter da = new U2DataAdapter(cmd);
            U2CommandBuilder builder = new U2CommandBuilder(da);
            da.UpdateCommand = builder.GetUpdateCommand();

            DataSet ds = new DataSet();
            da.Fill(ds);

            DataTable dt = ds.Tables[0];
            DataRowCollection lDataRowCollection = dt.Rows;
            int i = 1;
            foreach (DataRow item in lDataRowCollection)
            {
                item["FNAME"] = item["FNAME"] + "3";// modify single value
                item["SEMESTER"] = item["SEMESTER"] + "$";//modify multi-value
                item["COURSE_GRD"] = item["COURSE_GRD"] + "$";

                i++;

            }
            da.Update(ds);//use DataAdapter's Update() API

            //print modified value
            cmd.CommandText = string.Format("SELECT ID,FNAME,LNAME,SEMESTER,COURSE_NBR,COURSE_GRD FROM STUDENT WHERE ID={0} ORDER BY ID", ID); ;

            //verify the change
            U2DataAdapter da2 = new U2DataAdapter(cmd);
            DataSet ds2 = new DataSet();
            da2.Fill(ds2);
            Console.WriteLine(Environment.NewLine);
            ds2.WriteXml(Console.Out);

            //close connection
            lConn.Close();
            Console.WriteLine(Environment.NewLine + "End...");

            Console.WriteLine(SUCCESS_MSG);
        }
        catch (Exception e2)
        {
            Console.WriteLine(FAIL_MSG);
            string lErr = e2.Message;
            if (e2.InnerException != null)
            {
                lErr += lErr + e2.InnerException.Message;
            }
            Console.WriteLine(Environment.NewLine + lErr);
        }
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24168443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档