从数据库取每个字段,然后生成一个文本,首先是记录总数,然后加记录信息,每条记录一行,每个字段的长度固定的,但是每个字段的类型是不一样的,存入的有数字,有字母,也有汉字,但是生产文本时每个字段的长度都要用空格补够你最大固定长度(最大固定长度为已知)
我的程序如下:但是有汉字那个字段怎么都不补够16位,数据库设置该字段为varchar(16),大家帮忙看下,怎么让汉字根据从数据库取出的汉字的多少,补够16位,一个汉字算是2位。 string ls;//记录总数
string mycountstr = "select b_ID,c_ID,f_ID,b_where,b_number,b_time from table_data_up";
SqlDataAdapter myAdapter = new SqlDataAdapter(mycountstr, mysqlcon);
DataSet myDataset = new DataSet();
myAdapter.Fill(myDataset, "table_data_up");
DataTable myTable = myDataset.Tables["table_data_up"];
int count = myTable.Rows.Count;//获得记录总数
ls = count.ToString().PadLeft(4,'0');//记录总数补够4位
string myCmdString = "select b_ID,c_ID,f_ID,b_where,b_number,b_time from table_data_up";
SqlCommand cm = new SqlCommand(myCmdString, mysqlcon);
SqlDataReader dr = cm.ExecuteReader();
try
{
FileStream fs;
if (System.IO.File.Exists("a.txt"))
{
fs = new FileStream("a.txt", FileMode.Truncate);
}
else
{
fs = new FileStream("a.txt", FileMode.Append);
}
StreamWriter sw = new StreamWriter(fs, Encoding.Default);
sw.Write(ls);//先写入记录总数,然后在追加记录信息 while (dr.Read())
{
//dr[3]这个列怎么办,因为里面有汉字和字母数字
ls = dr[0].ToString().PadRight(10, ' ') + "," + dr[1].ToString().PadRight(10, ' ') +","+dr[2].ToString().PadRight(10,' ')+ "," +dr[3].ToString().PadRight(16,' ') + "," + dr[4].ToString().PadRight(10, ' ') + "," + dr[5].ToString().PadRight(16, ' ') + "\r\n"; sw.Write(ls);
}
sw.Close();
fs.Close();
MessageBox.Show("下载数据生成成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
dr.Close();
我的程序如下:但是有汉字那个字段怎么都不补够16位,数据库设置该字段为varchar(16),大家帮忙看下,怎么让汉字根据从数据库取出的汉字的多少,补够16位,一个汉字算是2位。 string ls;//记录总数
string mycountstr = "select b_ID,c_ID,f_ID,b_where,b_number,b_time from table_data_up";
SqlDataAdapter myAdapter = new SqlDataAdapter(mycountstr, mysqlcon);
DataSet myDataset = new DataSet();
myAdapter.Fill(myDataset, "table_data_up");
DataTable myTable = myDataset.Tables["table_data_up"];
int count = myTable.Rows.Count;//获得记录总数
ls = count.ToString().PadLeft(4,'0');//记录总数补够4位
string myCmdString = "select b_ID,c_ID,f_ID,b_where,b_number,b_time from table_data_up";
SqlCommand cm = new SqlCommand(myCmdString, mysqlcon);
SqlDataReader dr = cm.ExecuteReader();
try
{
FileStream fs;
if (System.IO.File.Exists("a.txt"))
{
fs = new FileStream("a.txt", FileMode.Truncate);
}
else
{
fs = new FileStream("a.txt", FileMode.Append);
}
StreamWriter sw = new StreamWriter(fs, Encoding.Default);
sw.Write(ls);//先写入记录总数,然后在追加记录信息 while (dr.Read())
{
//dr[3]这个列怎么办,因为里面有汉字和字母数字
ls = dr[0].ToString().PadRight(10, ' ') + "," + dr[1].ToString().PadRight(10, ' ') +","+dr[2].ToString().PadRight(10,' ')+ "," +dr[3].ToString().PadRight(16,' ') + "," + dr[4].ToString().PadRight(10, ' ') + "," + dr[5].ToString().PadRight(16, ' ') + "\r\n"; sw.Write(ls);
}
sw.Close();
fs.Close();
MessageBox.Show("下载数据生成成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
dr.Close();
string result = test + new string(' ', 16 - Encoding.GetEncoding("gb2312").GetBytes(test).Length);需要做下长度判断
Console.WriteLine(string.Format("{0,25}", "HelloWorld"));
Console.WriteLine(string.Format("{0,25}", "HelloWorld1"));
Console.WriteLine(string.Format("{0,25}", "HelloWorld11"));
Console.WriteLine(string.Format("{0,25}", "HelloWorld111"));Result:
HelloWorld
HelloWorld1
HelloWorld11
HelloWorld111不知道是不是这种效果啊