在C#中创建本地数据库

时间:2014-12-22 11:36:27

标签: c# database

我正在编写一个C#应用程序

这是一个离线测试应用程序

以.csv文件的形式导入大型数据文件

用户使用表单

选择此文件

然后我想以本地数据库的形式存储此.csv文件中包含的信息,以便我可以执行sql查询

我正在使用Visual Studio 2012

我以前从未设置过sql数据库,只在现有数据库上使用sql的经验有限

到目前为止,我的尝试是:

  1. 解决方案资源管理器>添加新文件>本地数据库(.sdf文件)
  2. 数据库资源管理器>表>创建表
  3. 然后我为所有字段添加了列名,将其中一个设置为我的主键
  4. 我试图将单个数据集添加到我的数据表中而没有运气
  5. string dbfile = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\MyDatabase.sdf"; SqlCeConnection sqlConnection = new SqlCeConnection("datasource=" + dbfile);

    SqlCeDataAdapter sqlAdapter = new SqlCeDataAdapter("select * from MyTable", sqlConnection);
    AMCCoreSignalsDBDataSet sqlData = new AMCCoreSignalsDBDataSet();
    sqlAdapter.Fill(sqlData);
    string strCSVDataLine = "1,2,3,four"
    sqlData.Tables[0].Rows.Add(new object[] { strCSVDataLine });
    sqlAdapter.Update(sqlData);
    
    sqlConnection.Close();
    

    此代码无法正常工作

    如何使用C#使用.csv数据填充数据库?

    我的方法不正确/不完整吗?

    有更好的方法吗?

    我想使用sql的原因是因为有很多数据。我可以创建一个类结构来包含数据,但它也意味着创建许多不同的过滤器函数。哪个SQL已包含...

1 个答案:

答案 0 :(得分:1)

问题是由.csv文件中出现空白值

引起的

这是我的修复

public void Import(string csvfname)
{
    string password;
    string cacheDatabase;
    string connectionString;
    System.IO.StreamReader objFile;
    string strCommand;
    string lineHeader;
    string line;
    string[] arrLineData;

    cacheDatabase = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\MyDatabase.sdf"; ;
    password = "";
    connectionString = string.Format("DataSource=\"{0}\"; Password='{1}'", this.cacheDatabase, this.password);

    objFile = new System.IO.StreamReader(csvfname);

    lineHeader = objFile.ReadLine();

    while (!objFile.EndOfStream)
    {
        line = objFile.ReadLine();
        arrLineData = line.Split(',');
        try
        {
            sqlConnection = new SqlCeConnection(connectionString());
            strCommand = "INSERT INTO MyTable VALUES ('" + arrLineData[0] + "', '" + arrLineData[1] + "', '" + arrLineData[2] + "')";
            SqlCeCommand sqlCommand = new SqlCeCommand(strCommand, sqlConnection);
            sqlCommand.ExecuteNonQuery();
            sqlConnection.Close();
        }
        catch (Exception exc)
        {
            MessageBox.Show("Error in Import(): " + exc.Message);
        }
    }
}