0

C# とローカル データベースで遊んでいます ( An empty SQL Server Compact Edition database for local data)

しかし、データベースに接続してデータを取得できません。

これは私が試すものです:

// Properties.Settings.Default.DatabaseConnectionString = Data Source=|DataDirectory|\Database.sdf
// I guess Visual Studio put it there after I created my database...

using(SqlConnection sqlConnection = new SqlConnection(Properties.Settings.Default.DatabaseConnectionString)) {
    using(SqlCommand sqlCommand = new SqlCommand("SELECT * FROM users WHERE id = @id", sqlConnection)) {
        sqlCommand.CommandType = CommandType.StoredProcedure;
        sqlCommand.Parameters.AddWithValue("@id", 1);
        try {
            sqlConnection.Open();
            SqlDataReader reader = sqlCommand.ExecuteReader(CommandBehavior.SingleRow);
            if(reader.Read()) {
                System.Console.WriteLine(reader);
                System.Console.WriteLine(reader["id"]);
                System.Console.WriteLine(reader["name"]);
            }
        }
        catch(Exception e) {
            System.Console.WriteLine(e.GetBaseException());
        }
        finally {
            sqlConnection.Close();
        }
    }
}

プログラム全体がしばらくハングします。一時停止した後、次のメッセージが表示されます。

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

4

2 に答える 2

1

以下を使用する必要があります。

using System.Data.SqlServerCe;

その後

using (SqlCeConnection sqlConnection = new SqlCeConnection(Properties.Settings.Default.DatabaseConnectionString))
{
    using (SqlCeCommand sqlCommand = new SqlCeCommand("SELECT * FROM users WHERE id = @id", sqlConnection))
    {
        sqlCommand.CommandType = CommandType.Text;
        sqlCommand.Parameters.AddWithValue("@id", 1);
        try
        {
            sqlConnection.Open();
            SqlCeDataReader reader = sqlCommand.ExecuteReader(CommandBehavior.SingleRow);
            if (reader.Read())
            {
                System.Console.WriteLine(reader);
                System.Console.WriteLine(reader["id"]);
                System.Console.WriteLine(reader["name"]);
            }
        }
        catch (Exception e)
        {
            System.Console.WriteLine(e.GetBaseException());
        }
        finally
        {
            sqlConnection.Close();
        }
    }
}
于 2013-08-02T13:59:12.383 に答える