sqlserver数据库内一个表的列的数据类型为varbinary,要从页面textbox的值存入这个列,数据类型怎么转化?要用到streamreader吗?有没有详细代码?链接也可以.我没找到
其实,就是这个值就是密码,在页面上用textbox接收,存入的时候把textbox的值转为数据库的varbianry类型.

解决方案 »

  1.   

    如果直接存,错误是这样的:
    不允许从数据类型 varchar 到数据类型 varbinary 的隐性转换(表 'MuOnline.dbo.MEMB_INFO',列 'memb__pwd')。请使用 CONVERT 函数来运行此查询。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 不允许从数据类型 varchar 到数据类型 varbinary 的隐性转换(表 'MuOnline.dbo.MEMB_INFO',列 'memb__pwd')。请使用 CONVERT 函数来运行此查询。
      

  2.   

    源代码是这样的:
    Imports System.Data.SqlClient
    Imports System.Data.SqlTypes
    Imports Microsoft.VisualBasic
    Imports System.IOPublic Class reg
        Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 "    '该调用是 Web 窗体设计器所必需的。
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub
        Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
        Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
        Protected WithEvents Label1 As System.Web.UI.WebControls.Label
        Protected WithEvents Label2 As System.Web.UI.WebControls.Label
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
        '不要删除或移动它。
        Private designerPlaceholderDeclaration As System.Object    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
            '不要使用代码编辑器修改它。
            InitializeComponent()
        End Sub#End Region   
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim memb_name As String        Dim memb_pwd As String        memb_name = TextBox1.Text
            memb_pwd = TextBox2.Text        Dim con As SqlConnection
            con = New SqlConnection("server=(local);uid=sa;pwd=;database=muonline")
            con.Open()
            Dim strinsert As String
            strinsert = "insert into memb_info(memb_name,memb__pwd) values('" + memb_name + "','" + memb_pwd + "') "
            Dim cmdinsert As SqlCommand
            cmdinsert = New SqlCommand(strinsert, con)
            cmdinsert.ExecuteNonQuery()
            con.Close()    End Sub
    End Class
      

  3.   

    byte[] b = System.Text.Encoding.ASCII.GetBytes("abc");
    string s = System.Text.Encoding.ASCII.GetString(b);byte[] rv = null;
    rv = new ASCIIEncoding().GetBytes("你好");
    string myStr=new UnicodeEncoding().GetString(rv);
      

  4.   

    daishengs(横舟摆渡) ( ) 信誉:100    Blog
    ---------------------------------------------
    谢谢.
    存入sqlserver的代码,可以写一下吗?
      

  5.   

    我是我的例子,你要改一下的。
    public  void my(byte[] _password)
    {
    StringBuilder strSql=new StringBuilder();
    strSql.Append("insert into Accounts_Users(");
    strSql.Append("UserName,Password)");
    strSql.Append(" values (");
    strSql.Append("@UserName,@Password)");
    SqlParameter[] parameters = {
        new SqlParameter("@UserName", SqlDbType.VarChar,50),
        new SqlParameter("@Password", SqlDbType.Binary,20)};
    parameters[0].Value = "username";
    parameters[1].Value = _password;

    SqlCommand cmd = new SqlCommand();
    SqlConnection connection = new SqlConnection("连接字符串");
    string SQLString = strSql.ToString();
    connection.Open();
    cmd.Connection = connection;
    cmd.CommandText = SQLString;
    cmd.CommandType = CommandType.Text;//cmdType;
    if (parameters != null) 
    {
    foreach (SqlParameter parm in parameters)
    cmd.Parameters.Add(parm);
    }
    cmd.ExecuteNonQuery();
    connection.Close();
    }
      

  6.   

    呵呵,我刚才已经写好了,再次感谢daishengs(横舟摆渡).
    顺便问一下,你平时用数据库组件吗?用哪个?
      

  7.   

    我是这样写的
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim memb_name As String        Dim memb_pwd As String        memb_name = TextBox1.Text
            memb_pwd = TextBox2.Text
           
            Dim mybyte() As Byte
            mybyte = System.Text.Encoding.ASCII.GetBytes(memb_pwd)
                   Dim con As SqlConnection
            con = New SqlConnection("server=(local);uid=sa;pwd=;database=muonline")
            con.Open()
           
            Dim command As SqlCommand        command = New SqlCommand("INSERT INTO memb_info(memb___id,memb_name,memb__pwd) VALUES(@id,@name,@pwd)", con)        Dim membid As SqlParameter
            membid = New SqlParameter("@id", SqlDbType.VarChar, 10)
            membid.Value = "asp"
            command.Parameters.Add(membid)        Dim name As SqlParameter
            name = New SqlParameter("@name", SqlDbType.NVarChar, 15)
            name.Value = TextBox1.Text
            command.Parameters.Add(name)        Dim pwd As SqlParameter
            pwd = New SqlParameter("@pwd", SqlDbType.VarBinary, mybyte.Length)
            pwd.Value = mybyte
            command.Parameters.Add(pwd)
            command.ExecuteNonQuery()        con.Close()
        End Sub