我對於使用數據集,適配器,數據表等有點新了......所以我認爲這可以作爲一個noob問題。爲什麼我的Datatable沒有任何結果進來?
我使用可視化設計器(帶有.xsd擴展名的文件)在visual studio中創建了數據集。我在那裏定義了一個我命名爲「課程」的DataTable。我通過使用sql server查詢設計器填充此表,所以我知道我的數據連接正確。
在我的代碼中,我正在測試如何創建DataTable,然後將其中的列映射到本地類,我稱其爲Course.cs。下面是方法:
MyContext ctx = new MyContext();
SqlConnection conn =
new SqlConnection("Data Source=****;Initial Catalog=****;User ID=****;Password=****");
SqlCommand command = new SqlCommand(@"select * from stuff", conn);
SqlDataAdapter da = new SqlDataAdapter();
MyDataSet ds = new MyDataSet();
ds.Locale = CultureInfo.InvariantCulture;
da.Fill(ds);
DataTable courses = ds.Courses;
IEnumerable<DataRow> query =
from course in courses.AsEnumerable()
select course;
foreach (var course in query)
{
Course localCourse = new Course();
localCourse.CourseCode = course.Field<string>("CourseCode");
ctx.Courses.Add(localCourse);
}
ctx.SaveChanges();
我沒有得到任何錯誤,它會運行的代碼很好,但自從「查詢」變量不中它有什麼,它不是使新對象我想要的映射值。
我在這裏錯過了什麼?
編輯
感謝您的快速反應!當我添加的代碼行:
da.Fill(ds);
它給我這個例外:
{"The SelectCommand property has not been initialized before calling 'Fill'."}
其迷惑我,因爲我不想創建一個選擇命令,我雖然這已經在我的數據表?
編輯兩個
我做了什麼建議,這是有道理的什麼,我需要做的,但我仍然得到任何結果(沒有錯誤了,但..)。如果我在相同的連接字符串上運行相同的查詢,我可以得到結果,任何想法?
編輯三!
這裏是我用來填充數據表的原始和醜陋的查詢。就像我說的,如果我在SSMS中做的話,結果會很好。
select
s.AdClassSchedId,
rtrim(s.code) +
CASE WHEN (isnull(s.section,'') <> '')
THEN '-S' + s.section
ELSE '' END as CourseCode,
s.descrip +
CASE WHEN (isnull(s.section,'') <> '')
THEN ' - Section ' + s.section
ELSE '' END as CourseName,
s.AdTeacherId,
s.StartDate,
s.EndDate,
s.DateLstMod as ClassSchedLastModified,
t.AdTermId
from adclasssched s
inner join adclassschedterm t on s.adclassschedid = t.adclassschedid
where s.active = 1
你沒有填寫數據表。請閱讀SQLDataAdapter。這裏有一個有用的鏈接http://www.codeproject.com/Tips/462730/Five-different-overloads-of-the-DataAdapter-Fill-m – Dhawalk 2013-03-26 13:44:59
是你的工作? – 2013-03-26 14:06:23
@PranayRana我欣賞你的徹底的答案,但我仍然沒有看到我的查詢變量中的數據...張貼另一個編輯我的問題。 – ledgeJumper 2013-03-26 14:08:00