初始化字符串的格式不符合从索引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内部异常:
这通常意味着您的连接字符串不好。如果您查看堆栈跟踪,您会注意到在尝试解释连接字符串时失败了。
检查你的连接字符串以确保它是正确的-或将其张贴在这里寻求帮助(但没有任何敏感信息,如密码;(
更新
根据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"(;
上面的连接字符串对我有效。