c# - 使用数据读取器使用数据库多列中的数据填充文本框

标签 c# mysql textbox datareader

我是数据库方面的新手,但想使用数据读取器和 SQL 查询来填充文本框。 我的程序为数据库中的每艘船创建 4 个文本框。每个文本框需要填充不同列的数据。当 4 个文本框填满时,将添加一艘具有 4 个文本框的新船,并且每列的第二行必须添加到文本框中。

这是我到目前为止的代码:

public void Schip()
{    
    using (SqlConnection thisConnection = new SqlConnection("Data Source=VMB-LP12;Initial Catalog=SmmsData;Integrated Security=True"))
    {
        string oString = "Select SchipNaam, RederijNr, Lengte, Laadvermogen FROM AlgSchipInfo";
        SqlCommand oCmd = new SqlCommand(oString, thisConnection);

        thisConnection.Open();
        using (SqlDataReader oReader = oCmd.ExecuteReader())
        {
            int i = 0;
            while (oReader.Read())
            // for (int i = 0; i < count; i++)
            {

                System.Web.UI.HtmlControls.HtmlGenericControl createDiv =
                new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
                createDiv.ID = "createDiv";
                this.Controls.Add(createDiv);
                List<TextBox> tb_names = new List<TextBox>();
                TextBox tb_name = new TextBox();

                //TextBox tb_name = new TextBox();
                tb_name.ID = "CreateT_" + i.ToString() + "_1";
                tb_name.Text = (oReader["SchipNaam"].ToString());
                createDiv.Controls.Add(new LiteralControl
                ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Scheepspnaam: <input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                tb_names.Add(tb_name);

                //TextBox tb_name1 = new TextBox();
                tb_name.ID = "CreateT_" + i.ToString() + "_2";
                tb_name.Text = (oReader["RederijNr"].ToString());
                createDiv.Controls.Add(new LiteralControl
                ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> RederijNr:<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                tb_names.Add(tb_name);

                //TextBox tb_name2 = new TextBox();
                tb_name.ID = "CreateT_" + i.ToString() + "_3";
                tb_name.Text = (oReader["Lengte"].ToString());
                createDiv.Controls.Add(new LiteralControl
                ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Lengte  :<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                tb_names.Add(tb_name);

                //TextBox tb_name3 = new TextBox();
                tb_name.ID = "CreateT_" + i.ToString() + "_4";
                tb_name.Text = (oReader["Laadvermogen"].ToString());
                createDiv.Controls.Add(new LiteralControl
                ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Laadvermogen:<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                tb_names.Add(tb_name);
                i++;
            }
        }
    }
}

我使用查询来查找四列,并使用数据读取器来读取数据。 使用 tb_name.text = (oReader["SchipMaam"].ToString()) 文本框将被填充。我在这个拼图中遗漏了一 block 吗?

问题是当我使用它时我的文本框一直为空。 到目前为止,据我所知,DIV 或 ID 没有任何问题。 如何使用数据库表列中的数据填充文本框?

如果您能为我指明正确的方向,那就太好了。

最佳答案

使用此代码,您从未将值分配给 <input type='text'正在生成标签:

public void Schip()
{    
    using (SqlConnection thisConnection = new SqlConnection("Data Source=VMB-LP12;Initial Catalog=SmmsData;Integrated Security=True"))
    {
        string oString = "Select SchipNaam, RederijNr, Lengte, Laadvermogen FROM AlgSchipInfo";
        SqlCommand oCmd = new SqlCommand(oString, thisConnection);

        thisConnection.Open();
        using (SqlDataReader oReader = oCmd.ExecuteReader())
        {
            int i = 0;
            while (oReader.Read())
            // for (int i = 0; i < count; i++)
            {

                System.Web.UI.HtmlControls.HtmlGenericControl createDiv =
                new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
                createDiv.ID = "createDiv";
                this.Controls.Add(createDiv);
                List<TextBox> tb_names = new List<TextBox>();
                TextBox tb_name = new TextBox();

                //TextBox tb_name = new TextBox();
                tb_name.ID = "CreateT_" + i.ToString() + "_1";
                tb_name.Text = (oReader["SchipNaam"].ToString());
                createDiv.Controls.Add(new LiteralControl
                ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Scheepspnaam: <input type='text' value='" + tb_name.Text + "' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                tb_names.Add(tb_name);

                //TextBox tb_name1 = new TextBox();
                tb_name.ID = "CreateT_" + i.ToString() + "_2";
                tb_name.Text = (oReader["RederijNr"].ToString());
                createDiv.Controls.Add(new LiteralControl
                ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> RederijNr:<input type='text' value='" + tb_name.Text + "' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                tb_names.Add(tb_name);

                //TextBox tb_name2 = new TextBox();
                tb_name.ID = "CreateT_" + i.ToString() + "_3";
                tb_name.Text = (oReader["Lengte"].ToString());
                createDiv.Controls.Add(new LiteralControl
                ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Lengte  :<input type='text' value='" + tb_name.Text + "' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                tb_names.Add(tb_name);

                //TextBox tb_name3 = new TextBox();
                tb_name.ID = "CreateT_" + i.ToString() + "_4";
                tb_name.Text = (oReader["Laadvermogen"].ToString());
                createDiv.Controls.Add(new LiteralControl
                ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Laadvermogen:<input type='text' value='" + tb_name.Text + "' id='" + tb_name.ID + "' runat='server'/></div></div></div>"));
                tb_names.Add(tb_name);
                i++;
            }
        }
    }
}

关于c# - 使用数据读取器使用数据库多列中的数据填充文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39636080/

相关文章:

c# - Windows 服务总是 "Starting"

c# - 如何从没有 Entity Framework 的 .NET Core 2.1 Web API 检索类中的连接字符串

mysql - REGEXP_REPLACE 不翻译反向引用

wpf - 不使用密码框隐藏 TextBox 控件的文本

c# - 字母数字文本框 - 粘贴前验证/清理剪贴板文本

c# - 如何使用 AutoMapper 将构造函数参数传递给隐式字典映射?

c# - 在 C# 中公开 DLL 的方法

c# - 如何在文本框中显示注册表项 C#

PHP:关键字搜索:在字符串中查找子字符串

mysql - 有没有办法在查询本身中使用当前行的(即将插入的)ID 号?