我想在ms sql server中对几个表进行SELECT, (只有选择,没有更新,插入或删除), 并从结果中生成(groupable devexpress)数据网格。
是哪种方法
b)或最快(关于响应时间)
c)或代码最少的那个?
使用
- 自动创建的数据集
- 从选择中手动创建的数据集
(如Direct method from SQL command text to DataSet)
- Linq to SQL
- 或其他方法?
您更喜欢哪种方式?
我期待着你的回答。
祝你好运
谢
答案 0 :(得分:1)
使用少量代码的一种非常简单的方法是加载数据到 数据表然后绑定数据为数据源到datagridview 。请注意,此示例不处理任何 sql注入问题。
将数据加载到数据表:
public static DataTable SelectData(string sCommand)
{
DataTable dtData = null;
try
{
dtData = new DataTable();
using (SqlConnection connection = new SqlConnection("your connection string goes here"))
{
using (SqlDataAdapter da = new SqlDataAdapter(sCommand, connection))
{
connection.Open();
da.Fill(dtData);
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return dtData;
}
将表绑定到datagridview:
DataTable dtData = SelectData("SELECT * FROM mytable");
dataGridView1.DataSource = dtData;
答案 1 :(得分:0)
如同Koryu所描述的那样,紧凑的方式将是DataTable。我认为,创建一个包含属性的类选择为属性会更加美观。
例如:
SELECT cId, name, email from customer
为此您将构建一个类:
public class Customer{
public Customer(int id, string name, string email){
this.Id = id;
this.Name = name;
this.Email = email;
}
public int Id {get; private set;}
public string Name {get; private set;}
public string Email{get; private set;}
public static IEnumerable<Customer> ReadCustomer(){
//Here you read the data from database and add each row to you List of Customer.
}
}
因此,您可以将客户列表定义为网格的数据源。
myGrid.DataSource = Customer.ReadCustomer();
如果您使用BindingList作为DataSource,您可以直接使用NewItemRow,它允许最终用户直接从Customer创建对象到DataSource。
我认为这是处理的好方法。