如何在c#文本框中显示数据库内容

时间:2013-11-11 17:08:29

标签: c# sql sqlite

背景我将值从文本文件传输到sqlite数据库。这些值存储在列表中,然后传输到数据库中(下面)

enter image description here

我想要什么现在我想从数据库中获取值并将它们输出到应用程序中的文本框中。基本上用户应该点击一个按钮说"显示文件"它应该只是将数据库中的所有列值显示到c#文本框中,实质上我只是重新创建数据库(在文本框中)。

问题: 我根本不知道sqlite或sql语法(新程序员)。我知道我必须使用查询运行查询选择,但是如何选择所有列,然后在文本框中显示所有列?

到目前为止我的尝试:(可能会有一些明显的错误)

 sqlite_cmd.CommandText = "SELECT * FROM abc";

 //Command object gives us a datareader object
 sqlite_datareader = sqlite_cmd.ExecuteReader();

 private void textBox1_TextChanged_1(object sender, EventArgs e)
 {
    // SQlite datareader allows us to run through the lines
    // while ( sqlite_datareader.Read())
    {

     // Below is my approach on trying to display all column values
     // textbox1.Text = sqlite_datareader["Seq", "Field "," Desc "," Len ", etc etc ]; 

    }

 }

}

旁注: 由于数据库的内容很大,文本框大小有限,如果我能得到一些水平和垂直滚动条,那将是很好的

2 个答案:

答案 0 :(得分:1)

private void FillMyTextbox( )
{
    // open your database connection
    var sqlLiteConnection = OpenYourConnection( );

    // create command
    using( var sqlLiteCommand = sqlLiteConnection.CreateCommand( ) )
    {
        sqlLiteCommand.CommandText = "select * from abc";

        // create the reader
        using( var sqlLiteReader = sqlLiteCommand.ExecuteReader( ) )
        {
            // a StringBuilder to store the contents of your table 
            var allRecords = new StringBuilder( );

            while( sqlLiteReader.Read( ) )
            {
                for( int i = 0; i < sqlLiteReader.FieldCount; i++ )
                {
                    // either adress the column via an index or its name
                    var columnContentAsString = sqlLiteReader[ i ].ToString( );
                    allRecords.Append( columnContentAsString );
                }
                allRecords.Append( Environment.NewLine );
            }

            textBox1.Text = allRecords.ToString( );
        }
    }

    // somehow close/dispose your connection
}

我希望这段代码能让您了解如何访问数据表。 using语句将处理读取器和命令对象的处理。 我建议您使用DataGridView来显示您的数据,而不是使用TextBox,但也可以用于测试目的。

答案 1 :(得分:1)

use datagrid instead of textbox

//Con = Connection Object
//Create Command Object
string sql;
SqlDataAdapter da;
DataTable dt;
SqlCommand com = con.createCommand();

//abc = your table name
//Provide Statement to Command Object
sql = " SELECT * FROM abc";
//Create New Datatable to fill with data
dt = new DataTable();

//Create DataAdapter to fill data in DataTable via Adapter
da = new SqlDataAdapter(sql, con);
da.Fill(dt);

//gridView1 = Your GridView Name
gridView1.DataSource = dt;
gridView1.Refresh();