读书人

c#读数据库将数据写入到txt。该如何

发布时间: 2012-05-23 13:44:13 作者: rapoo

c#读数据库,将数据写入到txt。
c#读数据库,将数据写入到txt。
但是用文本软件(比如EmEditor)打开文件,会报错:Null Characters。 Invalid Characters。
请问什么原因?为什么会有这样的情况。
数据库是oracle,txt字符编码是gb2312。

[解决办法]
/*测试数据表:test3 Create Table test3(ID bigint not null,Files Image null)
*/
private void button1_Click(object sender, EventArgs e)
{
FileStream fs = File.OpenRead(this.textBox1.Text.Trim());
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
SqlConnection con = new SqlConnection(ConStr);
SqlCommand cmd = new SqlCommand("", con);
cmd.CommandText = "Insert into tuzhi values('4','B8814','中冷器',@files,'2009-11-10')";
SqlParameter paraFile = new SqlParameter("@files", SqlDbType.Image);
paraFile.Value = bytes;
cmd.Parameters.Add(paraFile);
this.Cursor = Cursors.WaitCursor;
con.Open();
int i = cmd.ExecuteNonQuery();
MessageBox.Show("成功");
con.Close();
this.Cursor = Cursors.Default;
}

private void button2_Click(object sender, EventArgs e)
{
byte[] mypdffile = null;
SqlConnection con = new SqlConnection(ConStr);
SqlCommand cmd = new SqlCommand("", con);
cmd.CommandText = "Select tu From tuzhi Where ID='1'";
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
mypdffile = (byte[])dr.GetValue(0);
}
con.Close();
this.Cursor = Cursors.WaitCursor;
try
{
FileStream fs = new FileStream("D:\\aa1.pdf", FileMode.Create);
fs.Write(mypdffile, 0, mypdffile.Length);
fs.Flush();
fs.Close();
this.webBrowser1.Navigate("D:\\aa1.pdf");
}
catch { }
this.Cursor = Cursors.Default;
}

private void Form1_Load(object sender, EventArgs e)
{
//连接字符串自己改下,这是我的测试数据库的链接字符串
ConStr = "server=192.168.0.2;database=drawing ;uid=sa;Pwd=7612098;";
}

[解决办法]
无效字符,看看数据值
用SQLLDR
[解决办法]
那你用UE打开试试
[解决办法]
不如直接用SQL做,导出为文本文件
[解决办法]

[解决办法]
我做网优的工具,大部分功能都是把数据从数据库取出来进处理后保存为txt,xml,csv等文件,还真没有碰到你这种问题;
不过我用的数据库主要是sql2000,mysql等,
[解决办法]
直接用SQL连接不就的了
[解决办法]
顶一下顶一下
[解决办法]
你有没有做过把txt中的数据导入数据库?
你现在做的就是反过来操作,从数据库一行一行的读,然后一行一行的写入txt中,个人觉得不难,你再看看
[解决办法]
是不是写完后没有关闭流呢。
[解决办法]
DataGridView打印精灵组件 ,欢迎大家使用!一种快速的打印报表解决方案 ~_~

下载地址:点击下载体验版(带说明文档) 

我的博客(http://www.cnblogs.com/jyworks)

  DataGridView打印精灵组件提供您一个高效快速的报表生成与打印解决方案,提供详细快速的设置,让您直接从DataGridView生成报表、完成您的办公。



  本组件需要.NET FRAMEWORK 2.0版本支持。分为标准版与高级版,标准版提供所有基本的报表设置与打印功能,高级版提供对DataGridView的列详细设置、以及DataGridView EXCEL、ACCESS与XML、TXT文件的导入与导出!

 “DataGridView打印精灵”可根据各种不同设置方案,进行DataGridView的快速打印。
  使用这个DLL方法很简单,先需要添加对DLL的引用。再进行以下代码之添加。

使用环境:.NET FRAMEWORK 2.0以上版本

注意:在使用“打印”或“预览”功能之前,请确保您的打印机驱动正确安装并开启打印机,否则程序会报错。

VB代码:
  dim p as new JYWorks.打印精灵(DGV) 'DGV是一个要传入的Datagridview对象.
  p.showdialog() ''' 或 p.show()

C#代码:

JYWorks.打印精灵 printer=new JYWorks.打印精灵(DGV) ; 'DGV是一个要传入的Datagridview对象.
printer.showdialog(); //或printer.show();

打印精灵的构造函数

1、 New( ) 未传入 DataGridView对象(在使用Show() 或 ShowDialog()方法前如果未传入 DataGridView对象会出错,您可以使用 LoadDataGridView( DGV as DataGridView)方法载入DataGridView对象。

2、 New(标识符 as DataGridView) 传入一个DataGridView对象

3、 New(报表名as String , 标识符 as DataGridView) 传入一个String类型的字符串(报表名)与一个DataGridView对象。

其他打印的设置可以在窗体中自由修改,试用版中带说明文档(PDF与WORD)



免费版可自由使用,不过页面中会出现 “未注册”的字样。


图片展示(以下图片为1.00标准版):





------------------------------

本工作室代写软件/组件,服务优,收费经济,欢迎联系。QQ 157864607


[解决办法]
是编码格式问题吗?
用默认的编码格式写入文本。传入参数Encoding.Default,试一下。

读书人网 >C#

热点推荐