データベース接続に問題があり、コードに問題があるかどうか疑問に思う。レビューしてください。この質問は関連しています:Switch between databases, use two databases simultaneously質問。私が受けてるSQL Serverデータベースからデータを取得するための正しいコード
cs="Data Source=mywebsite.com;Initial Catalog=database;User Id=root;Password=toor;Connect Timeout=10;Pooling='true';"
using (SqlConnection cnn = new SqlConnection(WebConfigurationManager.ConnectionStrings["cs"].ConnectionString))
{
using (SqlCommand cmmnd = new SqlCommand("", cnn))
{
try
{
cnn.Open();
#region Header & Description
cmmnd.Parameters.Add("@CatID", SqlDbType.Int).Value = catId;
cmmnd.CommandText = "SELECT UpperID, Title, Description FROM Categories WHERE [email protected];";
string mainCat = String.Empty, rootCat = String.Empty;
using (SqlDataReader rdr = cmmnd.ExecuteReader())
{
if (rdr.Read())
{
mainCat = rdr["Title"].ToString();
upperId = Convert.ToInt32(rdr["UpperID"]);
description = rdr["Title"];
}
else { Response.Redirect("/", false); }
}
if (upperId > 0) //If upper category exists add its name
{
cmmnd.Parameters["@CatID"].Value = upperId;
cmmnd.CommandText = "SELECT Title FROM Categories WHERE [email protected];";
using (SqlDataReader rdr = cmmnd.ExecuteReader())
{
if (rdr.Read())
{
rootCat = "<a href='x.aspx'>" + rdr["Title"] + "</a> » ";
}
}
}
#endregion
#region Sub-Categories
if (upperId == 0) //show only at root categories
{
cmmnd.Parameters["@CatID"].Value = catId;
cmmnd.CommandText = "SELECT Count(CatID) FROM Categories WHERE [email protected];";
if (Convert.ToInt32(cmmnd.ExecuteScalar()) > 0)
{
cmmnd.CommandText = "SELECT CatID, Title FROM Categories WHERE [email protected] ORDER BY Title;";
using (SqlDataReader rdr = cmmnd.ExecuteReader())
{
while (rdr.Read())
{
subcat.InnerHtml += "<a href='x.aspx'>" + rdr["Title"].ToString().ToLower() + "</a>\n";
description += rdr["Title"] + ", ";
}
}
}
}
#endregion
}
catch (Exception ex) { HasanG.LogException(ex, Request.RawUrl, HttpContext.Current); Response.Redirect("/", false); }
finally { cnn.Close(); }
}
}
ランダムエラーは以下のとおりです。
- サーバーにリクエストを送信するとき、トランスポートレベルのエラーが発生しました。 (プロバイダー:TCPプロバイダー、エラー:0 - 既存の接続がリモートホストによって強制的に閉じられました)
- SQL Serverへの接続を確立する際に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverがリモート接続を許可するように構成されていることを確認します。 (プロバイダー:名前付きパイププロバイダー、エラー:40 - SQL Serverへの接続を開けませんでした)
- タイムアウトが切れています。プールから接続を取得する前にタイムアウト期間が経過しています。これは、プールされたすべての接続が使用中で、プールの最大サイズに達したために発生した可能性があります。
- ログインで要求されたデータベース "db"を開くことができません。ログインに失敗しました。ユーザー 'root'のログインに失敗しました。
あなたの質問は何ですか? – egrunin
コードは正しいですが、間違いがありますか? –
実行しようとするとどうなりますか?私たちはあなたのためにそれをテストすることはできません。また、なぜこれに2データベースの問題と関係があると言いますか?ここには1つのデータベースしかありません。 – egrunin