SQL INSERT查询....不插入varbinary(max)数据 [英] SQL INSERT query....not inserting varbinary(max) data

查看:96
本文介绍了SQL INSERT查询....不插入varbinary(max)数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用此代码插入一些信息.
但我在插入密码"时遇到问题
password collummn是varbinary(MAX)类型.
但是当我运行此代码并在数据库中看到结果时.每个条目都是正确的,但在密码列中却显示<二进制数据>"不播种二进制形式的密码.

 SqlCommand smd;
 私有 无效 saveInformation(字符串命令)
 {
     尝试
     {
         字符串 connectString = System.Configuration.ConfigurationManager.ConnectionStrings [" ].ToString();
         sc =  SqlConnection(connectString);
         smd =  SqlCommand(command,sc);
         sc.Open();
         smd.ExecuteNonQuery();
     }
     捕获(例外)
     {
         errormsg.Text = ex.Message;
     }

 }

 受保护的 无效 bemember_Click(对象发​​件人,EventArgs e)
 {
     字符串 Name = name.Text;
     字符串 Email = email.Text;
     字符串 Passtxt = pass.Text;
     字节 [] Pass = GetSHA1(Email,Passtxt);
     字符串命令= "  + Name +  ',CAST('" + Pass + "  + Email +  " ;
     saveInformation(command);
 }

 私有 静态  byte  [] GetSHA1(字符串用户ID,字符串密码)
 {
     SHA1CryptoServiceProvider sha =  SHA1CryptoServiceProvider();
     返回 sha.ComputeHash(System.Text.Encoding.ASCII.GetBytes(userID + password));
 } pre>

解决方案

为什么不能存储该过程的程序
1St创建一个商店程序,就像这样
此处传递coloum数据类型为表
中的varbinary(MAX)

 创建 过程 [dbo].[SP_Insert]
( @用户名  varchar ( 20 ),  @密码  varchar ( 20 ), @ Pass   varbinary (max))
原为 开始
- 您在此处的插入查询
  插入 插入 Table1(用户名,密码,Pass)( @用户名 @密码 @ Pass )
结束 




///////////////在C#代码中,您可以编写这样的代码

  byte  [] Pass = GetSHA1(Email,Passtxt);
字符串 connectString = System.Configuration.ConfigurationManager.ConnectionStrings [" ].ToString();


           SqlConnection con =  SqlConnection(connectString);
           cmd.CommandType = CommandType.StoredProcedure;
           cmd.CommandText = " ;
           cmd.Connection = con;
           con.open();

           cmd.Parameters.Add(" ,name.Text);
            cmd.Parameters.Add(" ,pass.Text);
             cmd.Parameters.Add(" ,Pass); 您的bute []变量Pass 
              cmd.ExecuteReader();
             con.close()




希望这对您有帮助.......................................


I am inserting some information using this code.
but i face problem in inserting "password"
password collummn is a varbinary(MAX) type.
but when I run this code and see the result in my database. every entries correct but in password collumn it is sowing that "< binary data >" not sowing password which is in Binary form.

SqlCommand smd;
 private void saveInformation(string command)
 {
     try
     {
         string connectString = System.Configuration.ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ToString();
         sc = new SqlConnection(connectString);
         smd = new SqlCommand(command, sc);
         sc.Open();
         smd.ExecuteNonQuery();
     }
     catch (Exception ex)
     {
         errormsg.Text= ex.Message;
     }

 }

 protected void bemember_Click(object sender, EventArgs e)
 {
     string Name =  name.Text;
     string Email = email.Text;
     string Passtxt = pass.Text;
     byte[] Pass = GetSHA1(Email, Passtxt);
     string command = "Insert into userInfo (username,password,email) values('"+Name+"', CAST('"+Pass+"' AS varbinary(max)),'"+Email+"')";
     saveInformation(command);
 }

 private static byte[] GetSHA1(string userID, string password)
 {
     SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
     return sha.ComputeHash(System.Text.Encoding.ASCII.GetBytes(userID + password));
 }pre>

解决方案

Why cant you store procedure for that
1St create a store Procedure like this
Here Pass coloum datatypeis varbinary(MAX) in table

create procedure [dbo].[SP_Insert]
(@username varchar(20),@password varchar(20),@Pass varbinary(max))
as begin
-- Your Insert Query here
  insert into Table1(username ,password ,Pass ) values (@username,@password,@Pass)
end




/////////////// In C# code you can write code like this

byte[] Pass = GetSHA1(Email, Passtxt);
string connectString = System.Configuration.ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ToString();


           SqlConnection con=new SqlConnection(connectString );
           cmd.CommandType = CommandType.StoredProcedure;
           cmd.CommandText = "SP_Insert";
           cmd.Connection = con;
           con.open();

           cmd.Parameters.Add("@username",name.Text );
            cmd.Parameters.Add("@password",pass.Text );
             cmd.Parameters.Add("@Pass",Pass  );// your bute[] variable Pass
              cmd.ExecuteReader();
             con.close()




Hope this may help you..........................................


这篇关于SQL INSERT查询....不插入varbinary(max)数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆