2

我是网络新手,我想使用数据表而不是数据库。我想知道为什么数据表查询与sql查询不同?我想从数据表中找到一个值:

  SELECT dbo.General_Ledger.Entry_Amount FROM dbo.General_Ledger WHERE Account_number=lbDebit_Account_numer

using (SqlConnection connect = new SqlConnection(con))
        {
            int index = lbDebit_Account.FindString(txtDebit_Account.Text);
            if (0 <= index)
            {
                lbDebit_Account.SelectedIndex = index;
            }
            SqlDataAdapter da3 = new SqlDataAdapter("SELECT *FROM dbo.General_Ledger", connect);

            DataTable dt1 = new DataTable();
            da3.Fill(dt1);
            string lbDebit_Account_numer = lbDebit_Account.SelectedValue.ToString();
            string row;
            row= Convert.ToString(dt1.Select(string.Format("'Account_number'={0}",lbDebit_Account_numer)));
        }

我想执行这个查询:

SELECT dbo.General_Ledger.Entry_Amount FROM dbo.General_Ledger WHERE Account_number=lbDebit_Account_numer
4

3 回答 3

0

因此,您需要参数化您的查询:

SqlDataAdapter da3 = new SqlDataAdapter("SELECT * FROM dbo.General_Ledger WHERE Account_number = @Account_number");
da3.SelectCommand.Parameters.AddWithValue("@Account_number", lbDebit_Account.SelectedValue);

DataTable dt1 = new DataTable();
da3.Fill(dt1);

现在你将拥有你想要的一行,你可以像这样恢复它:

DataRow dr = dt1.Rows[0];

然后您可以通过多种不同方式从该行中获取值:

var val = dr[0]; // grabs the value of the first column in the result list
var val = dr["fieldname"] // grabs the value of a specific field name

甚至有一些方法会返回类型化的数据,因为前面提到的返回一个,object因为基础值可能是很多东西。因此,如果它是一个字符串字段,您可以执行以下操作:

var val = dr.Field<string>(0) // grabs the value of the first column and returns it typed as a string
var val = dr.Field<string>("fieldname") // grabs a field and returns it typed as a string
于 2013-04-02T14:14:27.883 回答
0

很简单,你想根据这个字符串过滤 DataTable[dt1] [lbDebit_Account_numer]

DataRow dr = dt1.Select("Account_number = '"+lbDebit_Account_numer ="'"); 

你可以用

与或

运营商

single code['] 需要对字符串变量进行比较。

在这里你得到数据行,所有单元格将以数组格式选择任何单元格。

于 2013-04-02T14:46:37.487 回答
0

您可以尝试使用 DataTable 类的 DefaultView.RowFilter 属性。

例子:

dataTable.DefaultView.RowFilter = "Account_number=1"; 
于 2013-04-03T08:42:30.480 回答