初始化字符串的格式不符合从索引0开始的规范

时间:2013-04-24 22:32:23

标签: c# asp.net iis-7 enterprise-library

我正在使用Microsoft Enterprise Lip I我有这种方法在网站中插入资源 我得到这个错误我不认为这是许可问题,我真的不知道如何解决它。我测试connectionStrings的方式,它工作正常

  <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 HResult = -2147024809
  Message =初始化字符串的格式不符合   规范从索引0开始.Source = System.Data StackTrace:          在System.Data.Common.DbConnectionOptions.GetKeyValuePair(String   connectionString,Int32 currentPosition,StringBuilder buffer,Boolean   useOdbcRules,String&amp; keyname,String&amp;核心价值)          在System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable   parsetable,String connectionString,Boolean buildChain,Hashtable   同义词,布尔firstKey)          在System.Data.Common.DbConnectionOptions..ctor(String connectionString,Hashtable synonyms,Boolean useOdbcRules)          在System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)          在System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String   connectionString,DbConnectionOptions上一个)          在System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey)   key,DbConnectionPoolGroupOptions poolOptions,DbConnectionOptions&amp;   userConnectionOptions)          在System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey   键)          at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)          在Microsoft.Practices.EnterpriseLibrary.Data.Database.CreateConnection()          在Microsoft.Practices.EnterpriseLibrary.Data.Database.GetNewOpenConnection()          在Microsoft.Practices.EnterpriseLibrary.Data.Database.GetWrappedConnection()          在Microsoft.Practices.EnterpriseLibrary.Data.Database.GetOpenConnection()          在Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery(DbCommand)   命令)          在Christoc.Modules.ResourceModule.App_Code.BOL.Resoursce.Insert(Resoursce)   r)in   C:\的Inetpub \ wwwroot的\ ideaPark \ DesktopModules \ ResourceModule \ App_Code文件\ BOL \ Resoursce.cs:线   54 InnerException:

2 个答案:

答案 0 :(得分:12)

这通常意味着你的连接字符串没有任何好处。如果查看堆栈跟踪,您会发现在尝试解释连接字符串时失败了。

检查您的连接字符串以确保它是正确的 - 或在此处发布以获取帮助(但没​​有任何敏感信息,如密码;)

<强>更新

根据SqlDatabase documentation,SqlDatabase类接受连接字符串,而不是连接字符串配置的键。

所以

new SqlDatabase("SiteSqlServer");

应该是

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

Database objDB = new SqlDatabase(connection.ConnectionString);

(为简洁起见,我在此省略了任何防御性代码)

答案 1 :(得分:-1)

SqlConnection con = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename=C:\Users\KAMRAN RIYAZ\Desktop\Web Tech Lab Practice\ASP.NET\P21SQLoperations\P21SQLoperations\stu.mdf") ;

以上连接字符串对我有用。