2013-04-24 25 views
6

Tôi đang sử dụng Microsoft Enterprise Lip II có phương pháp này để chèn tài nguyên vào trang web Tôi nhận được lỗi này. thực sự tôi không biết làm thế nào để giải quyết it.by cách tôi kiểm tra connectionStrings và nó hoạt động tốtĐịnh dạng của chuỗi khởi tạo không phù hợp với đặc điểm kỹ thuật bắt đầu từ chỉ mục 0

<connectionStrings> 
    <add name="SiteSqlServer" 
     connectionString="Data Source=.;Initial Catalog=databaseName;User ID=sa;Password=***"/> 
    </connectionStrings> 

public static int Insert(Resoursce r) 
     { 
      Database objDB = new SqlDatabase("SiteSqlServer"); 
      int val = 0; 
      using (DbCommand cmd = objDB.GetStoredProcCommand("InsertResoursce")) 
      { 
       // OutParameter 
       objDB.AddOutParameter(cmd,"@OutResoursceID",DbType.Int32,int.MaxValue); 

       // iNParameter 
       objDB.AddInParameter(cmd, "@ModuleId", DbType.Int32, r.ModuleId); 
       objDB.AddInParameter(cmd, "@Summary", DbType.StringFixedLength, r.Summary); 
       objDB.AddInParameter(cmd, "@PageId", DbType.StringFixedLength, r.PageID); 
       objDB.AddInParameter(cmd, "@TypeId", DbType.Int32, r.TypeID); 
       objDB.AddInParameter(cmd, "@UserID", DbType.Guid, r.UserID); 
       objDB.AddInParameter(cmd, "@Enabled", DbType.Boolean, r.Enabled); 
       objDB.AddInParameter(cmd, "@SafetyAlert", DbType.Boolean, r.SafetyAlert); 
       objDB.AddInParameter(cmd, "@SaftyAlertText", DbType.StringFixedLength, r.SafetyAlertText); 


       try 
       { 
        val = objDB.ExecuteNonQuery(cmd); 
        if (val == 1) 
        { 
         return Convert.ToInt32(objDB.GetParameterValue(cmd, "@OutResoursceID")); 
        } 
        else 
        { 
         return -1; 
        } 
       } 
       catch (Exception ex) 
       { 


        throw ex; 
       } 

      } 

System.ArgumentException bị bắt HRESULT = -2147024809
nhắn = Định dạng của chuỗi khởi tạo không không tuân theo thông số bắt đầu từ chỉ mục 0. Nguồn = System.Da ta StackTrace: tại System.Data.Common.DbConnectionOptions.GetKeyValuePair (String connectionString, Int32 currentPosition, StringBuilder đệm, Boolean useOdbcRules, String & KeyName, String & KeyValue) tại System.Data.Common.DbConnectionOptions.ParseInternal (Hashtable parsetable, string connectionString, Boolean buildChain, Hashtable từ đồng nghĩa, Boolean firstKey) tại System.Data.Common.DbConnectionOptions..ctor (string connectionString, từ đồng nghĩa Hashtable, Boolean useOdbcRules) tại System.Data.SqlClient.SqlConnectionString..ctor (String connectionString) tại System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions (Chuỗi connectionString, DbConnectionOptions trước) tại System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup (DbConnectionPoolKey chủ chốt, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions & userConnectionOptions) tại System.Data.SqlClient.SqlConnection.ConnectionString_Set (DbConnectionPoolKey key) tại hệ thống. Data.SqlClient.SqlConnection.set_ConnectionString (Giá trị chuỗi) tại Microsoft.Practices.EnterpriseLibrary.Data.Database.CreateConnection() tại Microsoft.Practices.EnterpriseLibrary.Data.Database.GetNewOpenConnection() tại Microsoft.Practices.EnterpriseLibrary.Data .Database.GetWrappedConnection() tại Microsoft.Practices.EnterpriseLibrary.Data.Database.GetOpenConnection() tại Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery (Lệnh DbCommand ) tại Christoc.Modules.ResourceModule.App_Code.BOL.Resoursce.Insert (Resoursce r) trong c: \ inetpub \ wwwroot \ ideaPark \ DesktopModules \ ResourceModule \ App_Code \ BOL \ Resoursce.cs: dòng 54 InnerException:

Trả lời

9

này thường có nghĩa chuỗi kết nối của bạn không phải là bất kỳ tốt. Nếu bạn nhìn vào dấu vết ngăn xếp, bạn sẽ nhận thấy rằng điều này không thành công khi cố gắng diễn giải chuỗi kết nối của bạn.

Kiểm tra chuỗi kết nối của bạn để chắc chắn rằng nó là đúng - hoặc gửi nó vào đây để giúp đỡ (nhưng không có bất kỳ thông tin nhạy cảm như mật khẩu;))

CẬP NHẬT

Theo SqlDatabase documentation các SqlDatabase lớp học có một chuỗi kết nối, không phải là một chìa khóa để cấu hình chuỗi kết nối.

Vì vậy

new SqlDatabase("SiteSqlServer"); 

Nên

var connection = ConfigurationManager.ConnectionStrings["SiteSqlServer"]; 

Database objDB = new SqlDatabase(connection.ConnectionString); 

(Tôi đã bỏ qua bất kỳ mã phòng thủ ở đây cho ngắn gọn)

Các vấn đề liên quan