我尝试在C#中做一个Todolist
我用文本框填满了一个面板。 我使用SQLite。我在当前目录中创建一个文件。 我有简单的表与int和VARCHAR。 但我只能在网上写。 当我重新启动时,我无法重新启动此行。我需要删除SQLite文件。
感谢
开始
namespace Todolist
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
if (!File.Exists("MaBaseDeDonnees.sqlite"))SQLiteConnection.CreateFile("MaBaseDeDonnees.sqlite");
SQLiteConnection maConnexion;
var ConnectionString = "Data Source=|DataDirectory|MaBaseDeDonnees.sqlite";
maConnexion = new SQLiteConnection(ConnectionString);
maConnexion.Open();
var sql = "create table IF NOT EXISTS todo (nb INTEGER PRIMARY KEY , data VARCHAR(255))";
var commande = new SQLiteCommand(sql, maConnexion);
commande.ExecuteNonQuery();
sql = "insert into todo (data) values ('text1')";
sql = "insert into todo (data) values ('text2')";
commande = new SQLiteCommand(sql, maConnexion);
commande.ExecuteNonQuery();
maConnexion.Close();
display_todo();
}
显示:
private void display_todo()
{
var ConnectionString = "Data Source=|DataDirectory|MaBaseDeDonnees.sqlite";
var maConnexion = new SQLiteConnection(ConnectionString);
maConnexion.Open();
var sql = "select * from todo";
var commande = new SQLiteCommand(sql, maConnexion);
var reader = commande.ExecuteReader();
while (reader.Read())
{
var textBox1 = new TextBox();
textBox1.Location = new Point(10, 10);
textBox1.Text = (string) reader["data"];
textBox1.Size = new Size(200, 30);
todoPannel.Controls.Add(textBox1);
}
maConnexion.Close();
仅显示text2
抱歉编辑:sql = "insert into todo (data) values ('text1')";
commande = new SQLiteCommand(sql, maConnexion);
commande.ExecuteNonQuery();
String sql1 = "insert into todo (data) values ('text2')";
commande = new SQLiteCommand(sql1, maConnexion);
commande.ExecuteNonQuery();
我一直都有错误
答案 0 :(得分:2)
您使用相同的变量(sql
)来存储2个不同的插入内容:
sql = "insert into todo (data) values ('text1')";
sql = "insert into todo (data) values ('text2')";
以不同方式命名(sql
和sql1
)并执行两次插入命令。
答案 1 :(得分:1)
您正在覆盖SQL值:
sql = "insert into todo (data) values ('text1')";
sql = "insert into todo (data) values ('text2')";
第二个语句将覆盖前一个值,因此只执行最后一个。
您可以逐个执行多个语句,也可以加入这两个语句,然后执行它们:
sql = "insert into todo (data) values ('text1');insert into todo (data) values ('text2')";
答案 2 :(得分:0)
这是因为您将命令文本重新分配给sql
变量。尝试:
sql = "insert into todo (data) values ('text1')";
sql2 = "insert into todo (data) values ('text2')";
commande = new SQLiteCommand(sql, maConnexion);
commande.ExecuteNonQuery();
commande2 = new SQLiteCommand(sql2, maConnexion);
commande2.ExecuteNonQuery();