私のサイトでは、リスト ビューをループしてデータベースに情報を挿入しようとしています。ただし、サイトを実行すると、
ユーザーの既定のデータベースを開けません。ログインに失敗しました。ユーザーのログインに失敗しました.... (私のユーザー名)
唯一のことは、挿入コマンドがある別のページで、それが正常に機能し、問題なくデータベースからデータにアクセスできることです。
私が使用しようとしているコードは次のとおりです。
Guid InsertID = System.Guid.NewGuid();
String connectionString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
var myConnection = new SqlConnection(connectionString);
SqlCommand insertCMD = new SqlCommand("INSERT INTO Orders (Order_ID, Item_ID, QTY, Price_Per_Unit, Total_Price) VALUES (@Order_ID, @Item_ID, @QTY, @Price_Per_Unit, @Total_Price)", myConnection);
insertCMD.Connection.Open();
foreach (ListViewItem item in ItemLV.Items)
{
TextBox QTY = (TextBox)item.FindControl("QTYTB");
int InsertQTY = int.Parse(QTY.Text);
if (InsertQTY > 0)
{
Label Price = (Label)item.FindControl("PriceLabel");
HiddenField ItemID = (HiddenField)item.FindControl("IDHF");
Decimal InsertPrice = Decimal.Parse(Price.Text.Substring(1));
Guid InsertItemID = Guid.Parse(ItemID.Value);
Decimal InsertTotalPrice = InsertPrice * InsertQTY;
insertCMD.Parameters.Clear();
insertCMD.Parameters.AddWithValue("@Order_ID", InsertID);
insertCMD.Parameters.AddWithValue("@Item_ID", InsertItemID);
insertCMD.Parameters.AddWithValue("@QTY", InsertQTY);
insertCMD.Parameters.AddWithValue("@Price_Per_Unit", InsertPrice);
insertCMD.Parameters.AddWithValue("@Total_Price", InsertTotalPrice);
try
{
insertCMD.ExecuteNonQuery();
}
catch
{
Response.Redirect("~/Order/Error.aspx");
}
finally
{
}
}
}
insertCMD.Connection.Close();
このコードは上記のエラーをスローしますが、私の登録ページ (「foreach」ループを除いた同じコードを使用し、異なるコマンドとパラメーターを使用) では、問題なく動作します。したがって、ユーザーがデータベースにアクセスできないこととは実際には関係がないと思いますが、おそらく私のコードに問題があります。
スタック トレースは次のとおりです。
[SqlException (0x80131904): ユーザーの既定のデータベースを開けません。ログインに失敗しました。 ユーザー(私のユーザー アカウント) のログインに失敗しました
。owningConnection, TaskCompletionSource 1 回の再試行, DbConnectionOptions userOptions) +143 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 回の再試行) +83 System.Data.SqlClient.SqlConnection.Open() +96 Order_Order.ContinueBTN_Click(オブジェクト送信者, EventArgs e ) m:\OrderingSystem\Order\Order.aspx.cs:36 で1 wrapCloseInAction) +5295167 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +242
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1682
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +69
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +30
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +317
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +889
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +307
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions) +434
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +225
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +37
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions) +558
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions) +67
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +1052
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +167
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9553594
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
System.Web.UI.WebControls.Button.System.Web.UI. IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 System.Web.UI.Page. ProcessRequestMain (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) +1724
編集:
私の web.config ファイルの接続文字列は次のとおりです。
<connectionStrings>
<clear />
<add name="LocalSqlServer" connectionString="Data Source=.\WebSite2013;AttachDbFilename=|DataDirectory|\Ordering_System_Database.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
私の登録ページからの作業コードは次のとおりです。
String connectionString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
var myConnection = new SqlConnection(connectionString);
SqlCommand insertUser = new SqlCommand("INSERT INTO Customer_Profiles(UID, First_Name, Last_Name, State_ID, Country_ID, Phone_Number, Mobile_Number, Date_of_Birth) VALUES(@UID, @First_Name, @Last_Name, @State_ID, @Country_ID, @Phone_Number, @Mobile_Number, @Date_of_Birth)", myConnection);
insertUser.Parameters.AddWithValue("@UID", newUserGuid);
insertUser.Parameters.AddWithValue("@First_Name", FirstNameTB.Text);
insertUser.Parameters.AddWithValue("@Last_Name", LastNameTB.Text);
insertUser.Parameters.AddWithValue("@State_ID", StateDDL.SelectedValue);
insertUser.Parameters.AddWithValue("@Country_ID", CountryDDL.SelectedValue);
if (PhoneTB.Text.Length > 0)
{
insertUser.Parameters.AddWithValue("@Phone_Number", PhoneTB.Text);
}
else
{
insertUser.Parameters.AddWithValue("@Phone_Number", DBNull.Value);
}
if (MobileTB.Text.Length > 0)
{
insertUser.Parameters.AddWithValue("@Mobile_Number", MobileTB.Text);
}
else
{
insertUser.Parameters.AddWithValue("@Mobile_Number", DBNull.Value);
}
insertUser.Parameters.AddWithValue("@Date_of_Birth", BirthDay);
try
{
insertUser.Connection.Open();
insertUser.ExecuteNonQuery();
insertUser.Connection.Close();
}
catch
{
Response.Redirect("~/Error.aspx");
}
}
それ以来、少し実験し、テスト選択と挿入クエリを追加したところ、使用するクエリに関係なく、このページでのみエラーが発生しているように見えることがわかりましたが、Web サイトの他のすべてのページでは正常に動作します。 .