C# 插入查询将空白记录插入数据库

C# 插入查询将空白记录插入数据库,c#,sqlite,C#,Sqlite,我目前正试图使用一个单独的类来处理我的所有SQLite查询。下面的代码运行时没有任何错误,并在数据库中创建新行,但字段为空。当第一个消息框显示字符串文本时,第二个消息框显示命令文本时,值字符串为空。有人能指出我做错了什么吗 提前谢谢 public partial class v : Form { DB db = new DB(); public v() { InitializeComponent(); } private void bt

我目前正试图使用一个单独的类来处理我的所有SQLite查询。下面的代码运行时没有任何错误,并在数据库中创建新行,但字段为空。当第一个消息框显示字符串文本时,第二个消息框显示命令文本时,值字符串为空。有人能指出我做错了什么吗

提前谢谢

public partial class v : Form
{
    DB db = new DB();

    public v()
    {
        InitializeComponent();
    }

    private void btnInsert_Click(object sender, EventArgs e)
    {
        db.journal = tbJournal.Text;
        db.selected = tbSelected.Text;
        db.job = tbJob.Text;
        db.note = tbNote.Text;

        db.insertToUser();
    }
}

public class DB
{
    static private string Journal, Selected, Job, Note, Date;
    public string journal { get { return Journal; } set { Journal = value; } }
    public string selected { get { return Selected; } set { Selected = value; } }
    public string job {  get { return Job; } set { Job = value; } }
    public string note { get { return Note; } set { Note = value; } }
    public string date { get { return Date; } set { Date = value; } }

    static private SQLiteConnection Con = new SQLiteConnection("Data Source = garden.db; version =3;");
    private SQLiteCommand cmdINSERT = new SQLiteCommand("INSERT INTO User(Journal, Selected, Jobs, Notes, Date) VALUES('" + Journal + "','" + Selected + "','" + Job + "','" + Note + "','" + Date +"')",Con);


    public void insertToUser()
    {
        MessageBox.Show(Journal + " " + Selected + " " + Job + " " + Note);
        Con.Open();
        MessageBox.Show(cmdINSERT.CommandText);

        try { cmdINSERT.ExecuteNonQuery(); }
        catch (Exception ex) { MessageBox.Show(ex.ToString()); }
        Con.Close();
    }
}

您正在初始化
cmdINSERT
inline,因此在构建
DB
对象(
newdb()
)时,它正在使用属性值构建命令文本。此时,所有属性都为空。只需将
cmdINSERT
移动到
insertToUser
方法中

旁注

SQLiteConnection
类型实现了
IDisposable
接口。现在您正在实例化该对象,但没有关闭连接。要解决此问题,请将其移动到
insertToUser
中,并使用
块将其包装在
中:

使用(SQLiteConnection conn=newsqliteconnection(…)
{
//创建命令对象
//执行查询
}

这样就可以正确地关闭和处理连接。您可以在此处找到有关
IDisposable
使用
块的更多信息:

非常类似,它可以成为只读属性而不是字段。e、 g.
private SQLiteCommand cmdINSERT=>…