我正在使用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:
答案 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") ;
以上连接字符串对我有用。