我必须使用内部连接显示数据库中的数据与clouse [英] I have to display data from database using inner join with where clouse

查看:80
本文介绍了我必须使用内部连接显示数据库中的数据与clouse的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好我在这里开发了一个使用c#的windows应用程序这是我必须报告数据并从两个或两个以上的表中显示到datagriedview的结束点



我尝试过:



cn.Open();

string getdata =select tbl_vehicle_sale .deal_amnt,tbl_vehicle_sale.paid_amnt,tbl_vehicle_sale.due_amnt,tbl_vehicle_pur_Mast.veh_model,tbl_vehicle_pur_Mast.model_year from tbl_vehicle_sale inner join tbl_vehicle_pur_Mast on tbl_vehicle_sale.veh_no = tbl_vehicle_pur_Mast.veh_no; cmd = new SqlCommand(getdata,cn);

dr = cmd.ExecuteReader();

while(dr.Read())

{



dataGridView1.DataSource = dr;

}

Hi every one here i have developed windows application using c# this is the end poin i have to reporting the data and diplay into datagriedview from two or more than 2 table

What I have tried:

cn.Open();
string getdata = "select tbl_vehicle_sale.deal_amnt,tbl_vehicle_sale.paid_amnt,tbl_vehicle_sale.due_amnt,tbl_vehicle_pur_Mast.veh_model,tbl_vehicle_pur_Mast.model_year from tbl_vehicle_sale inner join tbl_vehicle_pur_Mast on tbl_vehicle_sale.veh_no=tbl_vehicle_pur_Mast.veh_no"; cmd = new SqlCommand(getdata, cn);
dr = cmd.ExecuteReader();
while (dr.Read())
{

dataGridView1.DataSource = dr;
}

推荐答案

如果你想在DataGridView中显示数据,不要使用DataReader - 改为使用DataTable和DataAdapter:

If you want to display data in a DataGridView, don't use a DataReader - use a DataTable and a DataAdapter instead:
string getdata = "SELECT s.deal_amnt, s.paid_amnt, m.due_amnt, m.veh_model, m.model_year FROM tbl_vehicle_sale s INNER JOIN tbl_vehicle_pur_Mast m ON s.veh_no = m.veh_no";
using (SqlDataAdapter da = new SqlDataAdapter(getdata, cn))
   {
   DataTable dt = new DataTable();
   da.Fill(dt);
   dataGridView1.DataSource = dt;
   }



如果你需要一个WHERE子句,只需添加它,并添加一个参数:


If you need a WHERE clause just add it, and add a parameter:

string getdata = "SELECT s.deal_amnt, s.paid_amnt, m.due_amnt, m.veh_model, m.model_year FROM tbl_vehicle_sale s INNER JOIN tbl_vehicle_pur_Mast m ON s.veh_no = m.veh_no& WHERE s.deal_amnt = @AMNT;quot;;
using (SqlDataAdapter da = new SqlDataAdapter(getdata, cn))
   {
   da.SelectCommand.Parameters.AddWithValue("@AMNT", amountToFilterBy);
   DataTable dt = new DataTable();
   da.Fill(dt);
   dataGridView1.DataSource = dt;
   }


这是一个解决您问题的简单方法。您可以在表单加载或按钮单击时添加此代码以加载网格, ...

This is a simple solution to your problem add this code where you want to load your grid, either on form load or button click,...
            string sql = "select tbl_vehicle_sale.deal_amnt,tbl_vehicle_sale.paid_amnt,tbl_vehicle_sale.due_amnt,tbl_vehicle_pur_Mast.veh_model,
        tbl_vehicle_pur_Mast.model_year from tbl_vehicle_sale inner join tbl_vehicle_pur_Mast on tbl_vehicle_sale.veh_no=tbl_vehicle_pur_Mast.veh_no";

using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(sql, connection))
using (var adapter = new SqlDataAdapter(command))
{
    connection.Open();
    var myTable = new DataTable();
    adapter.Fill(myTable);
    dataGridView1.DataSource = myTable;
}





这将填满您的网格,但我注意到您的SQL查询不是很正确,你确定查询在进入C#之前先在sqlserver上运行良好吗?



This will fill your grid, but i have noticed your SQL query is not very correct, are you sure that query runs well on sqlserver first before coming to C#?


这篇关于我必须使用内部连接显示数据库中的数据与clouse的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆