【问题标题】:how to convert string datatype to SQL's varbinary equivalent datatype?如何将字符串数据类型转换为 SQL 的 varbinary 等效数据类型?
【发布时间】:2012-11-01 12:42:02
【问题描述】:

抱歉,我是 C# 的新手,所以提出愚蠢的问题。

目前正在使用 OLEDB 在 c# 中执行一项任务。场景是,我想插入一个包含用户名、密码等信息的表。数据库是 SQL Server。列密码具有数据类型 varbinary(100)。

我想从字符串数据类型转换为 SQL 的 varbinary 等效数据类型。我尝试了一点,但没有成功。

最初我只是尝试使用reader.GetString(5)。但我得到的例外是:

"Specified cast is not valid."

*下面的事情我忘记说了*

我使用的阅读器是 OleDbDataReader。

oleParameter[7] = new OleDbParameter("@Password", OleDbType.VarBinary, 100);
oleParameter[7].Value = reader1.GetBytes(5);

(这里我从一个表中读取并插入到另一个表中。)

请帮帮我。

谢谢。

【问题讨论】:

    标签: c# sql-server type-conversion


    【解决方案1】:

    您不能将二进制数据作为字符串读取,请使用SqlDataReader.GetBytes 方法。

    看看this...

    【讨论】:

      【解决方案2】:

      您需要在应用程序和 varbinary 列之间发送/接收字节。得到字节数组后,可以将其转换为字符串:

      var bytes = reader.GetBytes(5);
      var myString = Encoding.UTF8.GetString(bytes); // use the same encoding used
                                                     // to create the bytes
                                                     // when saving to the DB.
      

      将字符串转换为字节数组:

      var bytes = Encoding.UTF8.GetBytes(myString);
      

      【讨论】:

        【解决方案3】:

        我找到了解决方案。

        而不是写下面的代码行,

        oleParameter[7] = new OleDbParameter("@Password",  OleDbType.VarBinary, 100);
        oleParameter[7].Value = reader1.GetBytes(5);
        

        我只是尝试了下面的代码:

          byte[] array = (byte[])reader1.GetValue(9);
          oleParameter[7] = new OleDbParameter("@Password",array);
        

        我没有指定该字段的数据类型,而是使用了构造函数 OleDbParameter(string name, object value)。

        而且效果很好。

        感谢 Khellang 和 Eren Ersönmez 的回复。

        【讨论】:

          【解决方案4】:

          我只是想解释一下为什么 reader.GetBytes(5) 不起作用。我自己以前也遇到过这个问题。

          为了使其正常运行,该特定字段不能在其中遇到任何空值。

          您可以在尝试执行 .GetBytes(5) 操作之前使用 IsDBNull(reader(5)) 语句测试该值。

          仅供参考!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-04-02
            • 1970-01-01
            • 1970-01-01
            • 2011-02-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多