sql数据库中的纪录导出保存成文件

zyjmib 2008-06-06 08:11:00
如题。
VS2005编写的网站,要求实现这样的功能,具体步骤如何?能否实现导出文件加密?
...全文
416 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
cityhunter172 2008-06-09
  • 打赏
  • 举报
回复
有一个比较简单的方法,我一直在用
思路是这样的

1、将 GridView 的内容变成字串
2、将上述字串变成 Steam 流提供给用户下载
3、文件名称可以是 .htm 或者是 .xls(Excel 可以打开 HTML)

上述功能,实际上是我把页面所看到的报表,用文件下载的形式让用户保存
因为这不是我的电脑,没有代码贴给你看
wh110 2008-06-09
  • 打赏
  • 举报
回复
System.Diagnostics.Process.Start这个应该可以调用BCP命令啊.
一品梅 2008-06-09
  • 打赏
  • 举报
回复
这个应该不是DML语句,不能用CMD,你用启用进程bcp试试?



lz问的问题都不错,都是我不会的.谢谢了.
zyjmib 2008-06-09
  • 打赏
  • 举报
回复
谢谢ls的回答。现在直接在查询分析器里可以用“bcp”了。
但是在程序里还是不行啊,
string sql = "EXEC master..xp_cmdshell 'bcp [xxx].[dbo].userproduct out d:\\DT1.txt -c -S -Usa -P'";

//下面是执行查询部分
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["webCon"].ConnectionString);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
conn.Close();

执行后不报错,但“DT1.txt”里没纪录。
另外
如果导出成“.xls”文件,日期和原来不同了。如数据库里日期“2008-5-7”在导出文件里就成了“0:00:00”。
求解。
zyjmib 2008-06-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 only_endure 的回复:]
这个应该不是DML语句,不能用CMD,你用启用进程bcp试试?


lz问的问题都不错,都是我不会的.谢谢了.
[/Quote]
现在用

{
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["webCon"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConn;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sqlConn.Open();
cmd.CommandText = "Select * from userproduct1";
DataSet ds = new DataSet();
sda.Fill(ds);

if (ds.Tables[0].Rows.Count > 0)
{
string BcpExec = "";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)//循环取本地文件名
{
BcpExec = @"bcp [cangku].[dbo].userproduct1 out d:\\DT1.xls";
//BcpExec += ds.Tables[0].Rows[i]["path"].ToString();
BcpExec += " -S -Usa -P -c -t,";//组合bcp命令
//Response.Write();//执行bcp命令并显示操作结果
ExeCommand(BcpExec);

}
Response.Write("共" + ds.Tables[0].Rows.Count + "条数据导出成功!");
}
}

/**/
/// <summary>
/// 执行Cmd命令
/// </summary>
/// <param name="commandText"></param>
/// <returns></returns>
public static string ExeCommand(string commandText)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
string strOutput = null;
try
{
p.Start();
p.StandardInput.WriteLine(commandText);
p.StandardInput.WriteLine("exit");
strOutput = p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();
}
catch (Exception e)
{
strOutput = e.Message;
}
return strOutput;
}

可以
zyjmib 2008-06-09
  • 打赏
  • 举报
回复
现在搞得可以导出xls文件了。日期格式也对,但是一条纪录都写在一个单元格里了。而且导回数据库报“找不到可安装的isam”的错。
再次求解。

“有一个比较简单的方法,我一直在用
思路是这样的

1、将 GridView 的内容变成字串
2、将上述字串变成 Steam 流提供给用户下载
3、文件名称可以是 .htm 或者是 .xls(Excel 可以打开 HTML)

这个方法搞得文件导回数据库报“外部表不是预期的格式”的错误。
zhiguo2008 2008-06-08
  • 打赏
  • 举报
回复
顶一下
popeyepower 2008-06-08
  • 打赏
  • 举报
回复
可以的,导出成CSV格式............................具体做法要搜搜....很早以前做过.
zyjmib 2008-06-08
  • 打赏
  • 举报
回复
“某路径下的\bcp ...详细指令”这个是如何写的?
mengxj85 2008-06-08
  • 打赏
  • 举报
回复
在服务器上直接导出到本地似乎有些问题,我们试着使用过,在单机上可以,建议先将内容导到Gridview再导到Excel,这样就简单多了,网上有很多源代码,自己找找看吧!
Limpire 2008-06-08
  • 打赏
  • 举报
回复
bcp "select * from database_name.dbo.userproduct" queryout "D:\Documents and Settings\Administrator\桌面\2008-6-7.xls" -c -q -S"server_name" -U"sa" -P"***"

//OR

bcp "database_name.dbo.userproduct" out "D:\Documents and Settings\Administrator\桌面\2008-6-7.xls" -c -q -S"server_name" -U"sa" -P"***"
zyjmib 2008-06-07
  • 打赏
  • 举报
回复
顶起再问问
kong521 2008-06-06
  • 打赏
  • 举报
回复
顶下
导出好做
带加密的导出不晓得
只做过密码加密
amandag 2008-06-06
  • 打赏
  • 举报
回复
应该可以,使用 System.Diagnostics.Process.Start(@"某路径下的\bcp ...详细指令");
zyjmib 2008-06-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amandag 的回复:]
这个功能用编程肯定是能实现,但用数据库本身的命令速度和效率肯定更高

如果是SQL Server ,楼主可以google一下bcp命令
[/Quote]
要求是点击一个按钮,然后把纪录导出,这个按钮事件里能调用“bcp命令”吗?
toxxj 2008-06-06
  • 打赏
  • 举报
回复
可以先把数据绑定到gridview控件上,然后再把数据用Excel文件的形式导出来,网上有例子的
Magicwords 2008-06-06
  • 打赏
  • 举报
回复
文件加密?还是内容加密
amandag 2008-06-06
  • 打赏
  • 举报
回复
这个功能用编程肯定是能实现,但用数据库本身的命令速度和效率肯定更高

如果是SQL Server ,楼主可以google一下bcp命令

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧