[英]Visual studio not loading data from Microsoft SQL Server Management Studio
我嘗試從我在 SSMS 上創建的表中檢索數據。 我以visual studio的形式創建了一個列表框,我嘗試顯示數據庫中的數據,但是當我嘗試加載程序時它沒有發送任何內容。 數據庫看起來不錯。 當我嘗試檢索movie_id 和movie_title 時出現該問題。 這是我的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataBase
{
public partial class Form1 : Form
{
DataTable dt = new DataTable();
public void LoadData()
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;"+
"Initial Catalog=online_tv;Integrated Security=SSPI;");
SqlCommand cmd = new SqlCommand("SELECT movie.* FROM movie", conn);
SqlDataAdapter sa = new SqlDataAdapter(cmd);
conn.Open();
sa.Fill(dt);
conn.Close();
sa.Dispose();
cmd.Dispose();
conn.Dispose();
}
public class MyMovie
{
public int id;
public string title;
public override string ToString()
{
return title;
}
}
public void ShowMovies()
{
int i;
for (i = 0; i < dt.Rows.Count; i++)
{
MyMovie movie = new MyMovie();
movie.id = Convert.ToInt32(dt.Rows[i]["movie_id"]);
movie.title = Convert.ToString(dt.Rows[i]["movie_title"]);
listBox1.Items.Add(movie);
}
}
public Form1()
{
InitializeComponent();
}
public void Form1_Load(object sender, EventArgs e)
{
LoadData();
ShowMovies();
}
這里有一大堆優化要做,但我想發布一個答案,介紹一個小而根本的變化,這將使您的生活變得更加輕松。 您在那里編寫的幾乎每一行代碼,都可以讓 Visual Studio 為您編寫; 就像你在布局表單時讓它編寫代碼一樣,你也可以讓它做所有這些數據訪問的事情,如果你已經設法連接 SSMS,那么連接 VS 幾乎是相同的過程,並且意味着它只是有效:
SELECT * FROM movie
放入movie
節點拖出“數據源”窗口並拖到窗體上你會看到你的數據
現在您已經了解了這一點,您可以開始玩其他東西了。 扔掉DataTable dt
; 你不需要它。 您的表單上有一個dataset
對象,其中包含一個 Movie 屬性,它是一個 MovieDataTable - 一個數據表的子類,您可以以比通過“字符串列名稱”更合乎邏輯和現代的方式訪問 - 例如,您在這里說的是yourdatasetnamehere.Movies[0].movie_title
它已經是一個字符串(順便把你的列名換成 PascalCase)而不是somedatatable.Rows[0]["movie_title"].ToString()
要在列表框中顯示您的電影,
movieBindingSource
movie_title
(所有這些都是在表單設計器上直觀地完成的,而不是在代碼中)
您也可以考慮將 Movie POCO 扔掉; 一個 MovieDataRow 由數據集生成器創建; 它以強類型方式擁有您電影的所有屬性,就像您的 POCO 一樣。 tableadapter 下載 DB 數據並將其轉換為強類型的 MovieDataRow 對象,這意味着您也可以丟棄 ShowMovies 中的所有 POCO 映射內容,最后,數據綁定您的列表框意味着您可以丟棄構建其項目集合的位手動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.