0

この投稿に簡単な説明を追加させてください。

Visual Studio を使用していますが、データベースへの接続を作成すると機能します。データベース デザイナー (テーブルを表示し、新しいクエリを作成できるもの) を使用してデータベースにクエリを実行すると、データが正しく処理されます。

ただし、このルートを使用しても、同じSQL例外が発生します。私にとって、これはビジュアルスタジオの何かが正しく設定されていないことを示していますが、間違っている可能性があります。

次のコードを使用して、サーバー上のデータベースに接続しています (上部に System.Data.SqlClient; を使用):

SqlConnection thisConnection = new SqlConnection();
thisConnection.ConnectionString = 
                              "Data Source=192.168.0.0,1433;" +
                              "Initial Catalog=test-db;" +
                              "User Id=UserName;" +
                              "Password=Password;";
thisConnection.Open();

そして、次のエラーが表示されます。

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, TdsParserState state) 
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, TdsParserState state) 
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 
at System.Data.SqlClient.TdsParser.Connect(String host, SqlInternalConnection connHandler, Int32 timeout) 
at System.Data.SqlClient.SqlInternalConnection.OpenAndLogin() 
at System.Data.SqlClient.SqlInternalConnection..ctor(SqlConnection connection, Hashtable connectionOptions) 
at System.Data.SqlClient.SqlConnection.Open() 
at InventoryControl.Login.validUserName() 
at InventoryControl.Login.LoginButton_Click(Object sender, EventArgs e) 
at System.Windows.Forms.Control.OnClick(EventArgs e) 
at System.Windows.Forms.Button.OnClick(EventArgs e) 
at System.Windows.Forms.ButtonBase.WnProc(WM wm, Int32 wParam, Int32 lParam) 
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam) 
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain) 
at System.Windows.Forms.Application.Run(Form fm) 
at InventoryControl.Program.Main()

これを解決する方法があれば、大歓迎です!

例外は以下のとおりです。

System.Data.SqlClient.SqlError: SQL Server does not exist or access denied

ただし、このサーバーにアクセスしてビジュアルスタジオでクエリを実行できるため、このサーバーへのアクセス許可があると確信しています。

4

2 に答える 2

2

サーバーが見つからないと思います。ほとんどのルーター/モデムのデフォルト構成を考えると、それ192.168.0.0があなたが探している IP であるとは思えません。ローカル マシン上にある場合は、localhostまたは127.0.0.1または コンピュータ名 (例: hans-pc) を使用します。別のマシン上にある場合は、適切な IP があり、ファイアウォールと SQL Server 構成マネージャーの両方でリモート アクセス用に構成されていることを確認する必要があります (TCP/IP および/または名前付きパイプ プロトコルを有効にします)。

また、その文字列のプロパティにいくつかのエイリアスを使用して短くすることもできます。

server=192.168.0.0;database=test-db;user id=UserName;password=Password
                                                                      ↑
                                      Make sure no trailing semicolon ┘

1433SQL サーバーのデフォルト ポートであるポートを削除しました。

例外に関する詳細情報を取得するには、次のコードを試してください。

try
{
   ...
   thisConnection.Open();
   ...
}
catch (SqlException ex)
{
    for (int i = 0; i < ex.Errors.Count; i++)
    {
        Console.WriteLine(ex.Errors[i].ToString());
        // or output them wherever you need to see them
    }
}
于 2013-05-08T17:20:16.420 に答える
0

よし、みんなの答えだ!!!

エミュレーターが正しくセットアップされていませんでした...これはコードとは関係ありません!!! モバイル エミュレーターを使用している場合は、次のリンクを参照して、インターネットに接続するようにエミュレーターをセットアップする必要があります。

http://www.xdevsoftware.com/blog/post/Enable-Network-Connection-Windows-Mobile-6-Emulator.aspx

于 2013-05-14T17:37:51.327 に答える