DBMaster5.2中通过ODBC从Long Varchar类型读取数据时如何避免读取双倍内容的问题?

~ 0 min
2016-03-04 03:28

在一个类型为Long Varchar的列中插入大量纯文本数据,然后使用JDBA工具读取,查询结果是正确的。但是如果使用ASP.NET读取则会读取到双倍的内容。示例AP代码部分如下:

string strSQL = @"SELECT LNSOURCE FROM TMP_FLNAME WHERE PUBLISH = 'N0'

AND FLCODE = ?;";

OdbcConnection Conn = new OdbcConnection(strConnLaw);

Conn.Open();

OdbcCommand Comm = new OdbcCommand(strSQL, Conn);

Comm.Parameters.Add("FLCODE", OdbcType.Char, 8).Value = hidFLCode.Value.Trim();

OdbcDataReader dr = Comm.ExecuteReader();

if (dr.Read())

{

        // The datatype of LNSOURCE is long varchar

        Response.Write("<pre>" + dr["LNSOURCE"].ToString()+"</pre>");

}

dr.Close();

Conn.Close();

 

我们可以使用OleDb去避免双倍读取问题,但是请注意用户需要确认在连接字符串中 “Provide”应该为”Provider=DMOLE52” 而不是”Provider=DMOLE52.1”。

另外,如果用户坚持使用ODBC,他们可以通过修改AP来避免双重内容读取问题,使用DataReader 的“GetChars”and add ”CommandBehavior.SequentialAccess”可以读取数据。

OdbcDataReader dr = Comm.ExecuteReader(CommandBehavior.SequentialAccess);

  if (dr.Read())

            {

                char[] buffer;

                int iStart = 0;

                long returnLen;

                buffer = new char[256];

                returnLen = dr.GetChars(0, iStart, buffer, 0, 256);

                richTextBox1.Text += new string(buffer);

                while (returnLen > 0)

                {

                    iStart += (int)returnLen;

                    returnLen = dr.GetChars(0, iStart, buffer, 0, 256);

                    richTextBox1.Text += new string(buffer);

                }

            }

            dr.Close();

            Conn.Close();

 

版本: DBMaster 5.x, 4.3

产品: 评估板/普通

平台:所有

平均分: 0 (0 投票)

你不能对该内容发表评论

标签