初始化字符串的格式不符合规范,起始索引为0。

12

我正在使用 Microsoft Enterprise Lip。我有一个在网站中插入资源的方法,但是出现了以下错误,我认为这不是权限问题,但我真的不知道如何解决它。顺便说一下,我测试了 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& keyname, String& keyvalue) 在 System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean 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 previous) 在 System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) 在 System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) 在 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 command) 在 Christoc.Modules.ResourceModule.App_Code.BOL.Resoursce.Insert(Resoursce r) in c:\inetpub\wwwroot\ideaPark\DesktopModules\ResourceModule\App_Code\BOL\Resoursce.cs:line 54 InnerException:
2个回答

21

通常意味着你的连接字符串有问题。如果查看堆栈跟踪,您会注意到在尝试解释连接字符串时出现了失败。

检查连接字符串以确保其正确 - 或在此处发布以获取帮助(但不包括任何敏感信息,如密码 ;) )

更新

根据SqlDatabase文档,SqlDatabase类需要一个连接字符串,而不是连接字符串配置的键。

因此,

new SqlDatabase("SiteSqlServer");

应该是

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

Database objDB = new SqlDatabase(connection.ConnectionString);

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


-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");

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接