Possible Duplicate:
How handle Varbinary an asp.net updateSQL VARBINARY在ASP.NET UPDATE
你好,这是我以前的问题如下。
问题是,当我尝试更新由aspx表单中的一个listview提交的varbinary。 每次我检索到相同的错误:
我大提琴弦字符串二进制verrebbero troncati。 L'istruzioneèstata interrotta。所以字符串或二进制将被截断命令被中断。
我tougth这是asp.net的问题,我试图用C#在服务器端做拦截列表视图的事件ItemInserting与下面的代码:
RunSqlCommand是一个类,我在底部的代码做:
protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
IOrderedDictionary NuoviValori = e.NewValues;
Label CodiceArticolo = (Label)ListView1.Items[e.ItemIndex].FindControl("CODICE_ARTICOLOLabel1");
string Descrizione = "";
string UM = "";
string Foto = "";
string TipoArt = "";
foreach (DictionaryEntry entry in NuoviValori)
{
switch (entry.Key.ToString())
{
case "DESCRIZIONE":
Descrizione = entry.Value.ToString();
break;
case "UM":
UM = entry.Value.ToString();
break;
case "FOTO":
if (entry.Value == null)
{
Foto = EncodeTo64("ADBC");
}
else
{
Foto = entry.Value.ToString();
}
break;
case "TIPO_ART":
TipoArt = entry.Value.ToString();
break;
}
}
e.Cancel = true;
string strCmd = "UPDATE TBL_ARTICOLI SET DESCRIZIONE = '" + Descrizione +"'," +
"UM = '" + UM +"'," +
"FOTO = @Foto," +
"TIPO_ART = '" + TipoArt + "' " +
"WHERE CODICE_ARTICOLO = '" + CodiceArticolo.Text + "'";
RunSqlCommand.Parametro parametro = new RunSqlCommand.Parametro();
parametro.Name = "Foto";
parametro.Tipo = SqlDbType.VarBinary;
parametro.Value = Convert.FromBase64String(Foto);
RunSqlCommand.Parametro[] Parametri = new RunSqlCommand.Parametro[1];
Parametri[0] = parametro;
string retCmd = new RunSqlCommand().RunSqlCmdParamDeltaSSL(strCmd, Parametri);
ListView1.EditIndex = -1;
}
static public string EncodeTo64(string toEncode)
{
byte[] toEncodeAsBytes
= System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
string returnValue
= System.Convert.ToBase64String(toEncodeAsBytes);
return returnValue;
}
public struct Parametro
{
public SqlDbType Tipo;
public object Value;
public string Name;
}
public string RunSqlCmdParamDeltaSSL(string Command, Parametro[] Parameters)
{
int NumeroAffetto;
Connection ConnString = new Connection();
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = ConnString.ConnectDeltaSSL();
SqlCommand Comando = new SqlCommand(Command, Conn);
foreach (Parametro param in Parameters)
{
SqlParameter picparameter = new SqlParameter();
picparameter.SqlDbType = param.Tipo;
picparameter.ParameterName = param.Name;
picparameter.Value = param.Value;
Comando.Parameters.Add(picparameter);
}
Comando.CommandType = System.Data.CommandType.Text;
try
{
Comando.Connection.Open();
NumeroAffetto = Comando.ExecuteNonQuery();
return NumeroAffetto.ToString();
}
catch (Exception ex)
{
return ex.Message;
}
finally
{
Comando.Connection.Close();
}
}
但是这个代码每次都是一样的错误。
我控制了表格,但一切正确。
真的我不知道需要做更多的事情。
三江源
Piercarlo