我是C#的新手并且一直致力于工作计划。一个简单的票务程序作为主要故障时的备份。我没有服务器来运行数据库所以我一直在使用sqlite。这很有效,因为我不需要安装任何东西。我想将其设置为保存每个用户程序的数据库文件,以保存到具有数据库文件唯一名称的网络位置。我已经弄清楚如何设置数据库的保存位置,但没有给文件命名。我想使用当前登录用户的名称,该名称已经是唯一的,并且在程序运行时显示,当保存新票证时,它也会添加到数据库中。程序检查文件位置,如果数据库不存在则创建它。
public partial class Ticket_Contingency : Form
{
SQLiteConnection con;
SQLiteDataAdapter da;
SQLiteCommand cmd;
DataSet ds;
DataTable dt;
int id;
string userName = Environment.UserName;
}
public Ticket()
{
InitializeComponent();
AppDomain.CurrentDomain.SetData("DataDirectory", Environment.GetFolderPath(Environment.SpecialFolder.Personal));
private void Form1_Load(object sender,EventArgs e) { //从App.config加载保存的用户名 usernametextBox.Text = userName;
AppDomain.CurrentDomain.SetData("DataDirectory", Properties.Settings.Default.folderdb);
dblabel.Text = Properties.Settings.Default.folderdb;
//Diables Autovalidation
this.AutoValidate = AutoValidate.Disable;
if (!File.Exists("|DataDirectory|incidentdb.sqlite"))
try
{
con = new SQLiteConnection(@"Data Source=|DataDirectory|incidentdb.sqlite;Version=3;New=True;Compress=True;");
con.Open();
cmd = con.CreateCommand();
cmd.CommandText = "CREATE TABLE 'contacts' ('Id' INTEGER PRIMARY KEY NOT NULL DEFAULT (0) ,'firstname' VARCHAR,'lastname' VARCHAR,'mi' CHAR,'email' VARCHAR,'phone' VARCHAR,'ext' CHAR,'visn' CHAR,'site' VARCHAR,'department' VARCHAR,'desklocation' VARCHAR,'notes' VARCHAR,'template' VARCHAR,'priority' CHAR,'summary' VARCHAR, 'status' CHAR, 'timestamp' DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 'username' VARCHAR)";
cmd.ExecuteNonQuery();
con.Close();
Form1_Load(this, null);
}
catch (SQLiteException ex)
{
// Log the exception
{
}
//Tries to connect to the local Database. Returns error message on failure
try
{
con = new SQLiteConnection(@"Data Source=|DataDirectory|incidentdb.sqlite;Version=3;");
con.Open();
da = new SQLiteDataAdapter("Select ID, firstname as 'firstname', lastname as 'lastname', summary as 'summary', timestamp as 'timestamp' from contacts ORDER by ID ASC", con);
ds = new System.Data.DataSet();
da.Fill(ds, "Person_Details");
dataGridView1.DataSource = ds.Tables[0];
con.Close();
Clear_Form(this, null);
}
catch (SqlException)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.ExitThread();
}
}
}
我想做的是替换
if (!File.Exists("|DataDirectory|incidentdb.sqlite"))
类似
if (!File.Exists("|DataDirectory|" + userName + ".sqlite"))
我知道这不起作用,但我真的不知道如何解决这个问题。我到处搜索,但只能得到看起来像原始代码的结果 if(!File.Exists(" | DataDirectory | incidentdb.sqlite")
我真的很感激一些帮助。就像我说的我是新手。我的大多数其他问题都是通过研究解决的,但这超出了我的范围。谢谢!