c#如何在SQL server数据库的行和列中存储包含文本之间空白的.dat文件

本文关键字:包含 存储 文本 之间 文件 dat 空白 SQL server 数据库 | 更新日期: 2023-09-27 18:07:22

c#如何在SQL server数据库的行和列中存储包含文本空白的。dat文件

1   2014-03-13 15:21:32 1   0   1   0
24  2015-02-09 16:37:52 1   0   1   0
16  2015-02-09 16:40:10 1   0   1   0
11  2015-02-09 16:41:17 1   0   1   0

c#如何在SQL server数据库的行和列中存储包含文本之间空白的.dat文件

如果您只想存储.dat文件以便稍后重新创建和使用,您可以将其存储为BLOB:

ADO。净:

   SqlParameter param=new SqlParameter("@yourdatFile", SqlDbType.VarBinary);
   param.Value=<YourDatFileAsBinary>;

sql字段将是varbinary(max)。然后将其从DB中读取为二进制,并将其流式传输到文件中。

如果您的目标是将数据文件中空格之间的信息加载到数据库表的单独列中,或者甚至动态地创建一个具有不同列数的新表以供进一步使用,您应该首先通过Split读取您的文件,然后您可以动态地创建您的表并插入

例如:

        var f = File.ReadAllText("path");
        var splitted = f.Split(null); // splits by whitespace
        // If you want to create a dynamic table for your .dat file information, since you don't know how many columns will be needed.
        // I do not recommend this way!! Your database scheme should not be modified dynamically.
        var createSql = "CREATE TABLE yourTable ( ";
        foreach (var entry in splitted)
        {
            createSql += string.Format("{0} nvarchar(100), ", entry);
        }
        createSql += " );";

        var insertSql = "INSERT INTO yourTable VALUES ( ";
        foreach (var entry in splitted)
        {
            insertSql += string.Format("{0}, ", entry);
        }
        insertSql += " );";
        // run these two scripts via ado on your DB
        StreamReader r = new StreamReader(f);
         {
           conn.Open();
           while (!r.EndOfStream)
                    {
                        var s = r.ReadLine().Split(''t');
                        string temp = s[1];
                        var temp1 = temp.Split(null);
                        SqlCommand cmd = new SqlCommand("insert into attendance2 values('" + s[0] + "','" + temp1[0] + "','" + temp1[1] + "','" + s[2] + "','" + s[3] + "','" + s[4] + "','" + s[5] + "')", conn);
                        cmd.ExecuteNonQuery();
                    }
                    conn.Close();