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

本文关键字:开始 索引 字符串 格式 不符合 初始化 | 更新日期: 2023-09-27 18:10:42

我正在使用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=-2147028409
Message=初始化字符串的格式不符合从索引0开始的规范。Source=System.Data StackTrace:位于System.Data.Common.DbConnectionOptions.GetKeyValuePair(字符串connectionString,Int32 currentPosition,StringBuilder缓冲区,布尔值useOdbcRules,字符串&keyname,字符串&键值(位于System.Data.Common.DbConnectionOptions.ParseInternal(哈希表parsetable,字符串连接字符串,布尔buildChain,哈希表同义词,布尔firstKey(位于System.Data.Common.DbConnectionOptions..ctor(字符串连接字符串,哈希表同义词,布尔值使用OdbcRules(位于System.Data.SqlClient.SqlConnectionString.ctor(字符串连接字符串(位于System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(字符串connectionString,DbConnectionOptions上一页(位于System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKeykey,DbConnectionPoolGroupOptions池选项,DbConnectionOptions&userConnectionOptions(位于System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey键(位于System.Data.SqlClient.SqlConnection.set_ConnectionString(字符串值(位于Microsoft.Practices.EnterpriseLibrary.Database.CreateConnection((位于Microsoft.Practices.EnterpriseLibrary.Database.GetNewOpenConnection((位于Microsoft.Practices.EnterpriseLibrary.Database.GetWrappedConnection((位于Microsoft.Practices.EnterpriseLibrary.Database.GetOpenConnection((位于Microsoft.Practices.EnterpriseLibrary.Database.ExecuteNonQuery(DbCommand命令(位于Christoc.Modules.ResourceModule.App_Code.BOL.Resoursce.Insert(资源r( 在c: ''inetpub''wwwroot''ideaPark''DesktopModules''ResourceModules''App_Code''POL''Resursce.cs:line54内部异常:

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

这通常意味着您的连接字符串不好。如果您查看堆栈跟踪,您会注意到在尝试解释连接字符串时失败了。

检查你的连接字符串以确保它是正确的-或将其张贴在这里寻求帮助(但没有任何敏感信息,如密码;(

更新

根据SqlDatabase文档,SqlDatabase类采用连接字符串,而不是连接字符串配置的键。

所以

new SqlDatabase("SiteSqlServer");

应该是

var connection = ConfigurationManager.ConnectionStrings["SiteSqlServer"];
Database objDB = new SqlDatabase(connection.ConnectionString);

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

SqlConnection con=新的SqlConnection(@"数据源=(LocalDB(''MSSQLLocalDB;AttachDbFilename=C:''Users''KAMRAN RIYAZ''Desktop''Web Tech Lab Practice''ASP.NET''P1SQLoperations''P1SQLOperations''stu.mdf"(;

上面的连接字符串对我有效。

相关文章: