2017-02-15 41 views
1

我要的是保存圖像的URL,因爲我看到的URL保存有兩個或四個對角線依賴,所以他們不採取特殊字符,我已經嘗試這兩種方式,送我的URL字符串不止一個Diagonal附件。爲什麼試圖用存儲過程保存URL只能插入一個點?

我已經調試,隨後插入過程,並一路始終攜帶url額外的對角線,除了在插入,因爲這是保存在URL字段中的唯一的事情就是時間了「」

地址去這樣在整個過程"..//..//../images/images/Logo.png",在其缺陷不言而喻四個對角線卻絲毫沒有被正確保存。

URL應該最後一個管道後去|,但只有一個點能夠被看見。

enter image description here

插入代碼:

#region EMPRESA 
    #region insertar Empresa 
    public string insertarEmpresa(int idEmpresa, string nombre, string rfc, string direccion, int codPostal, string idEstado, string telefono, string colonia, string pais, string ciudad,int tipoS,string immex,string logo, int idUser, string ip) 
    { 
     establecerConexion(); 
     string result = ""; 
     try 
     { 
      SqlDataReader read = null; 
      comando = new SqlCommand("sp_InsertarEmpresa", conexion); 
      comando.CommandType = CommandType.StoredProcedure; 
      comando.Parameters.Add("@idEmpresa", SqlDbType.Int).Value = idEmpresa; 
      comando.Parameters.Add("@nomEmpresa", SqlDbType.VarChar).Value = nombre; 
      comando.Parameters.Add("@rfc", SqlDbType.VarChar).Value = rfc; 
      comando.Parameters.Add("@direccion", SqlDbType.VarChar).Value = direccion; 
      comando.Parameters.Add("@codPostal", SqlDbType.Int).Value = codPostal; 
      comando.Parameters.Add("@estado", SqlDbType.VarChar).Value = idEstado; 
      comando.Parameters.Add("@telefono", SqlDbType.VarChar).Value = telefono; 
      comando.Parameters.Add("@colonia", SqlDbType.VarChar).Value = colonia; 
      comando.Parameters.Add("@pais", SqlDbType.VarChar).Value = pais; 
      comando.Parameters.Add("@ciudad", SqlDbType.VarChar).Value = ciudad; 
      comando.Parameters.Add("@tipoS", SqlDbType.Int).Value =tipoS; 
      comando.Parameters.Add("@immex", SqlDbType.VarChar).Value = immex; 
      comando.Parameters.Add("@logo", SqlDbType.VarChar).Value = logo; 
      comando.Parameters.Add("@idUser", SqlDbType.Int).Value = idUser; 
      comando.Parameters.Add("@ip", SqlDbType.VarChar).Value = ciudad; 
      conexion.Open(); 
      read = comando.ExecuteReader(); 
      if (read.HasRows) 
      { 
       while (read.Read()) 
       { 
        result = read.GetValue(0).ToString(); 
       } return "1"; 
      } 
      else return "1"; 

     } 
     catch (SqlException ex) 
     { 
      return "2"; 
     } 
     finally 
     { 
      if (comando != null) 
       comando.Dispose(); 
      conexion.Close(); 
     } 

    } 
    #endregion 

存儲過程的代碼:

USE [DBSIADANA] 
GO 

/****** Object: StoredProcedure [dbo].[sp_InsertarEmpresa] Script Date: 02/16/2017 12:33:38 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

ALTER Procedure [dbo].[sp_InsertarEmpresa] 
(
    @idEmpresa int, 
    @nomEmpresa varchar(max), 
    @rfc varchar(max), 
    @direccion varchar(max), 
    @codPostal int, 
    @estado varchar(50), 
    @telefono varchar(30), 
    @colonia varchar(max), 
    @pais varchar(50), 
    @ciudad varchar(50), 
    @tipoS int, 
    @immex varchar, 
    @logo varchar, 
    @idUser int, 
    @ip varchar(50) 

) 
As 
Begin 
    Declare 
    @idCiudad int, 
    @idEstado int, 
    @idPais int 

    set @idCiudad = (Select idCiudad from DBSGICE.dbo.cCiudad where nomCiudad like '%'[email protected]+'%') 
    set @idEstado = (Select idEstado from DBSGICE.dbo.cEstado where nomEstado like '%'[email protected]+'%') 
    set @idPais = (Select idPais from DBSGICE.dbo.cPais where nomPais like '%'[email protected]+'%') 

    If exists(Select idEmpresa from DBEMPDEV.dbo.tEmpresa where [email protected]) 
     Update DBEMPDEV.dbo.tEmpresa Set [email protected],[email protected],[email protected],[email protected],[email protected] 
     where [email protected] 
    Else 
     Insert into DBEMPDEV.dbo.tEmpresa (nomEmpresa,rfc,direccion,codPostal,idEstado,telefono,colonia,idPais,idCiudad,immex,logotipo,principal) 
     values (@nomEmpresa,@rfc,@direccion,@codPostal,@idEstado,@telefono, @colonia, @idPais,@idCiudad,@immex,@logo,0) 
     SET @idEmpresa=(SELECT TOP 1 idEmpresa FROM DBEMPDEV.dbo.tEmpresa ORDER BY idEmpresa DESC); 
      Insert into DBSIADANA.dbo.tSistemaEmpresa(idEmpresa,idTipoSistema)values(@idEmpresa,@tipoS) 

    Insert Into DBSIADANA.dbo.tLogEmpresa Values(GETDATE(), @idUser, 3, @ip, CONVERT(varchar(10),@idEmpresa)+' | '[email protected]) 

End 

GO 
+0

您可以減少列,並在這裏把你的存儲過程,更快地發現根本原因。 –

回答

2

你沒告訴我們你調用存儲過程,但是從症狀所描述的,我猜你可能已經在存儲過程中定義的參數爲VARCHARNVARCHAR - 而不指定爲該字符串長度

在SQL Server中,如果省略長度字符串將默認爲系統給定長度 - 在參數爲存儲過程的情況下,長度爲一個字符

所以VARCHAR是相同的VARCHAR(1),因此只接受一個字符長串 - 一切默默地截斷。

這個故事的寓意是:你應該ALWAYS(!無例外)定義明確的長度VARCHARNVARCHAR(也CHARNCHAR)數據類型!

更改VARCHAR到像VARCHAR(100)(或任何長度有道理在您的情況),你應該罰款

相關問題