当选择代码时,如何从数据库检索数据?在我的数据库中,我得到了代码列和描述列。对于代码列,我得到了“0001”,对于描述列,我得到了“abc”,或者可以说,“0001”的描述是“abc”。
我已经试过很多次了,但还是失败了,有人知道怎么做吗?
我想在用户选择“0001”时,在“说明”列中显示“ABC”
代码如下:
string connectionString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\Archives\Projects\Program\Sell System\Sell System\App_Data\db1.accdb;Persist Security Info=False;");
int y = 16;
UpdateTextPosition();
OleDbDataReader dReader;
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT [Code] FROM [Data] WHERE Code='@Code'", conn);
cmd.Parameters.Add(new OleDbParameter("@Code", OleDbType.VarChar, 200, "Code"));
cmd.Parameters["@Code"].Value = textBoxCodeContainer[0][y].Text;
dReader = cmd.ExecuteReader();
AutoCompleteStringCollection codesCollection = new AutoCompleteStringCollection();
while (dReader.Read())
{
string numString = dReader[0].ToString().PadLeft(4, '0');
codesCollection.Add(numString);
}
dReader.Close();
conn.Close();
以下是图片链接:
https://www.dropbox.com/s/5q8pyztqy7ejupy/Capture.PNG(此图像是连接到程序的数据库)
https://www.dropbox.com/s/mlwkvuvtxww2hjm/Untitled_2.png(此图显示代码列工作正常,但当选择代码时,说明不会显示在说明列中)
这是我的问题:
我想当代码被选择为显示在untitled_2.png中时,“0001”的描述(显示在untitled_2.png中)显示“0001”的描述,即“A”(请参阅数据库capture.png)
最佳答案
假设该描述是读取代码的表中的一列,则必须在查询检索到的字段列表中添加该列
OleDbDataReader dReader;
string cmdText="SELECT [Code], [Description] FROM [Data] WHERE Code=@Code"
using(OleDbConnection conn = new OleDbConnection(connectionString))
using(OleDbCommand cmd = new OleDbCommand(cmdText, conn))
{
conn.Open();
cmd.Parameters.Add(new OleDbParameter("@Code", OleDbType.VarChar, 200, "Code"));
cmd.Parameters["@Code"].Value = textBoxCodeContainer[0][y].Text;
using(OleDbDFataReader dReader = cmd.ExecuteReader())
{
AutoCompleteStringCollection codesCollection = new AutoCompleteStringCollection();
while (dReader.Read())
{
string numString = dReader[1].ToString());
codesCollection.Add(numString);
}
}
}
我还修复了在@code参数周围加上单引号的命令文本。不需要它们,因为在生成参数时已经指定了数据类型。
还要注意一次性对象周围的using语句。通过这种方式,它们将被正确地关闭,并且在出现异常的情况下由框架处理。
关于c# - 根据访问数据库C#中的代码检索数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18250548/