【问题标题】:WebException was unhandled when reading from database从数据库读取时未处理 WebException
【发布时间】:2012-06-26 15:51:57
【问题描述】:

我所做的很简单。我只需要连接到 SQL 数据库并从表中读取信息。我确信我错过了一些愚蠢的东西。我正在使用 C#、SQL Sever 和 WPF。显示的连接字符串是数据源构建器提供的连接字符串,因此我认为它是正确的。我测试了与它的连接,它是成功的。我附上了一些代码和图像来帮助你帮助我解决我的问题。

代码:

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    con = new System.Data.SqlClient.SqlConnection();

    con.ConnectionString = "Data Source=USSW7DEVWS16\\DEVELOPER;Initial Catalog=acrGIS;Integrated Security=True";

    con.Open();
    using (SqlCommand command = new SqlCommand("SELECT * FROM dbo.acrObjects", con))
    {
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            string Object = reader.GetString(0);
            string Comment = reader.GetString(1);
            string OStreet = reader.GetString(2);
            string OCity = reader.GetString(3);
            string OState = reader.GetString(4);
            string OZip = reader.GetString(5);
            string OSpec = reader.GetString(6);

            arcObjects.Add(new acrObject() { Object_Num = Object, Comments = Comment, Street = OStreet, City = OCity, State = OState, Zip = OZip, Spec = OSpec });
        }
        foreach (acrObject objects in arcObjects)
        {
           MessageBox.Show(objects.ToString());
        }
    } 

这是我的班级以及我的列表和连接定义:

class acrObject
{
    public string Object_Num {get; set;}
    public string Comments{get; set;}
    public string Street {get; set;}
    public string City {get; set;}
    public string State{get; set;}
    public string Zip {get; set;}
    public string Spec {get; set;}
    public override string  ToString()
    {
              return string.Format("Object Number: {0}, Comments: {1}, Street: {2}, City: {3}, State: {4}, Zip: {5}, Spec: {6}", Object_Num, Comments, Street, City, State, Zip, Spec);
    }
}



System.Data.SqlClient.SqlConnection con;

        List<acrObject> arcObjects = new List<acrObject>();

异常图片:

就行了:

while (reader.Read())

更奇怪的是,有时错误并没有抛出,而是跳过了所有代码。所以它从来没有尝试显示我觉得很奇怪的消息框。谢谢您的帮助。如果您还有任何问题或希望我发布更多我的代码,请告诉我,我将很乐意。

显示断点和调用堆栈:

这是我执行 try/catch 时抛出的异常:

【问题讨论】:

  • 如果您看不清图片,只需 CTRL++ 直到您能够阅读图片:)
  • 您是否尝试添加 try-catch 以查看它给出的异常?
  • 在上面的消息框中,单击“查看详细信息”并检查“内部异常”的内容。
  • 您发布的代码都没有任何网络工作。查看调用堆栈以找出代码中发生错误的位置。

标签: c# sql wpf exception


【解决方案1】:

确保您的应用程序可以访问dbo 架构的身份,并确保您在dbo 架构中创建了arcObjects

  1. 您可以通过执行SELECT SCHEMA_NAME() 检查登录的默认架构。或者,您可以在安全 > 用户下的数据库中找到登录名并查看其属性。您可以检查默认架构以及它拥有的任何其他架构。例如,您可以将用户添加到 db_owner,或者如果您不希望该身份拥有完全权限,也可以添加到 db_datareader/db_datawriter
  2. 检查表所属的架构:

在新的查询窗口中执行以下 SQL:

select t.name as table_name, s.name as schema_name from sys.tables as t 
    inner join sys.schemas as s on t.schema_id = s.schema_id
where object_id = OBJECT_ID(N'arcObjects')

如果表属于dbo,则应在schema_name 列下显示dbo。如果没有,请将表格移动到dbo

 ALTER SCHEMA dbo 
 TRANSFER [schema listed in schema_name column].arcObjects

或者,您可以在对象资源管理器中浏览表格。这些表将以 [schema].[table name] 格式列出。

【讨论】:

  • 你能详细说明我将如何检查这个吗?
  • 它们都正确显示在那里..我什至将数据库作为数据源添加到 Visual Studio,并且表和数据在那里..我不明白发生了什么。这不是我第一次这样做哈哈。
  • 我会将您的答案作为正确答案,因为如果这是我的问题,它会起作用。看看我上面的评论,看看我真正的问题哈哈。 :p 再次感谢。
猜你喜欢
  • 2022-12-14
  • 2015-12-15
  • 2010-12-30
  • 1970-01-01
  • 2014-10-29
  • 2015-01-17
  • 2022-01-07
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多