有幸发现了Anthem.NET这个东东,真是Server Control的一大创举,stand up for open source code seriously,而且是老外的,国人明显落后,大都为了利益,唉,国人应该向老外学习!
开发数据库安装应用程序
现在的项目大都与数据库打交道,为了方便客户,要求在部署项目时提供数据库安装应用程序,下面的Code是本人反编译某个项目的数据库安装应用程序(net),相信根据这个示例写出java的代码不是难事!
void CreateDatabase()
{
(代码略) //获取关键参数值,主要是(SQL服务器名称,用户名称, 密码,数据库名称,源数据库文件,目标数据库路径),要注意程序的控制这些变量值-非空!
关键代码:
try
{
string connectionString = "server=" + SQL服务器名称 + ";user id=" + 用户 + ";password=" + 密码 + ";";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlDataReader reader = null;
SqlCommand command = new SqlCommand("sp_helpdb", connection);
command.CommandType = CommandType.StoredProcedure;
reader = command.ExecuteReader();
for (int i = 0; i < reader.FieldCount; i++)
{
if (reader.Read() && (reader["name"].ToString() == 数据库名称))
{
MessageBox.Show("数据库 " + 数据库名称+ " 已经存在!");
this.txtDbIp.Focus();
this.cmdCreate.Enabled = true;
this.cmdExit.Enabled = true;
return;
}
}
command = null;
connection.Close();
if (str6.Substring(str6.Length - 1) != @"\")
{
str6 = str6 + @"\";
}
string strSql = "restore database " +数据库名称+ " from disk = '" + 源数据库文件 + "' with move 'WHPortDB_Data' to '" + 目标数据库路径 + 数据库名称 + "_Data', move 'WHPortDB_Log' to '" + 目标数据库路径 +数据库名称+ "_log', replace"; (注意:'WHPortDB_Data 'WHPortDB_Log这两个文件是备份数据库产生的文件,实际要根据不用的数据库而改变,我编译安装程序的被这卡了一下, )
this.DBExecute(connection, strSql);
//定义代码(
void DBExecute(SqlConnection connection, string strSql)
{
try
{
connection.Open();
new SqlCommand(strSql, connection).ExecuteNonQuery();
connection.Close();
}
catch (Exception ex)
{
throw new Exception("数据库打开错误。详细:错误发生在" + ex.Source + "的" + ex.Message + "处。");
}
}
//可作出友好提示 messagebox,alert等
}
catch
{//异常处理}
}
使用Jmail组件发送邮件
◆ 在Asp中使用Jmail,直接使用 Server.CreateObject("Jmail.Message")就可以了
◆ 在.net环境中,需要进行设置
1.安装jmail4.3
2.找到jmail.dll(Program Files\Dimac\w3JMail4下)
3.执行Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin\ildasm.exe(可使用Visual Studio .Net 2005 命令提示),
格式如下:tlbimp c:\Program Files\Dimac\w3JMail4\jmail.dll /out:myJmail.dll /namespace:myJmail
生成myJmail.dll后,copy到web的根目录的bin目录。在ASP.Net页面中,用这个方法引用:
Jmail.aspx
<%@ Page Language="C#" C%>
<%@ Import Namespace="myJmail" %>
<script runat="server">
protected void Page_Load(Object Src, EventArgs E)
{
Message jmail=new Message();
jmail.From="sss";
jmail.AddRecipient("closetome521@sina.com",null,null);//收件人
jmail.MailServerUserName="brookes";
jmail.MailServerPassWord="walkor";
jmail.Subject="jmail c#";
jmail.Send("mail.lsg.com",false);//发送内容
}
</script>
Tlbimp:
Microsoft .Net Framework Type Library to Assembly Converter
send的意义
真悲哀,一天到晚写这样的代码Button_Click(Object sender, EventArgs e) 还不知道,这发送者send的意义是什么?到底有什么用?今天在网上查了下这么说的
这个Sender 就是我们在这个事件中处理触发这个事件的对象的时候用的。就是说这个
Sender 就是被Click 的button 看个示例:
<input type="submit" id="a1" value="一" runat="server">
<input type="submit" id="a2" value="二" runat="server">
<input type="submit" id="a3" value="三" runat="server">
<input type="submit" id="a4" value="四" runat="server">
这是四个Submit 按钮,他们激发的事件是同一个事件,怎么来区分呢? 看下面的Code
public void Submit_Click(Object sender, EventArgs E)
{
switch (((Control)sender).ID)
{
case "a1":showmsg.Text=""哈哈一; break;
case "a2" :showmsg.Text=""哈哈二; break;
case "a3" :showmsg.Text=""哈哈三; break;
case "a4" :showmsg.Text=""哈哈四; break;
}
}
</script>
<asp:Label id=showmsg runat=server />
代码本身没有什么意思,但是却说明了一个问题,也许这就是这篇文章的意义所在吧
C#.NET使用TTS语音引擎实现中英文真人朗读
本文讲述使用微软TTS5.1语音引擎(中文)实现文本阅读和音频输出为WAV完美解决方案.
网上很多文章说的是要安装SAPI.51 SDK,而这个东西有好几十M,并且用起来比较复杂。微软官方网站上是这样写的:SAPI5.1 SDK可以从微软网站下载:http://www.microsoft.com/speech/download/sdk51/ 需要安装程序的有Speech SDK 5.1(68M)和5.1 Language Pack (81.5M)。本文使用不到2M的东西实现文语转换,可以说是有关TTS的完美版本!功能:
进行中文文本的阅读,可以将阅读的语音输出为WAV音频。
实现平台:
Microsoft Visual Studio 2005
微软TTS5.1语音引擎(中文)
所需要的东西:
用TlbImp从SAPI.51 SDK中导出的DotNetSpeech.dll(160K)
微软TTS5.1语音引擎(中文).msi(1.55M)
以上两个东西由于大小关系没有传上来,需要的可以留下邮箱地址。
如果你自己安装了SAPI.51 SDK,可以使用这个命令自己导出DotNetSpeech.dll
Tlbimp sapi.dll /out: DotNetSpeech.dll(出现错误不用管,不影响使用)
安装微软TTS5.1语音引擎(中文).msi,打开"控制面板",打开"语音"配置项目,在"文字-语音转换"的"语音选择"组合框中选择"Microsoft Simplified Chinese",这样才可以读出中文。如果要读英文,要选择"Microsoft Sam"。
使用Microsoft Visual Studio 2005新建项目,添加引用,引用DotNetSpeech.dll。
命名空间:
using DotNetSpeech;
读出文本框中的中文:
SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice voice = new SpVoice();
voice.Speak(textBox1.Text, spFlags);
将文本框中中文的读音保存为WAV文件:
SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice voice = new SpVoice();
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav";
dialog.Title = "保存WAV文件";
dialog.FilterIndex = 2;
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
SpeechStreamFileMode spFileMode = SpeechStreamFileMode.SSFMCreateForWrite;
SpFileStream spFileStream = new SpFileStream();
spFileStream.Open(dialog.FileName, spFileMode, false);
voice.AudioOutputStream = spFileStream;
voice.Speak(textBox1.Text, spFlags);
voice.WaitUntilDone(1000);
上面两句一定要写上,否则产生的文件没有声音
WaitUntilDone的后面的smTimeout是一个int型
spFileStream.Close();
使用C#如何实现Word文档的合并
类和方法说明,Merge(string strOrgDoc, string[] arrCopies, string strOutDoc)方法实现参见
http://www.codeproject.com/office/mswmergecs.asp
public class DocMerger
{
/// <summary>
/// Merge a document with a set of copies
/// </summary>
/// <param name="strOrgDoc">
/// Original file name
/// </param>
/// <param name="arrCopies">
/// File names of the modified files
/// </param>
/// <param name="strOutDoc">
/// The result filename
/// </param>
public void Merge(string strOrgDoc, string[] arrCopies, string strOutDoc)
{ }
/// <summary>
/// Merge a document with a set of copies
/// </summary>
/// <param name="strOrgDoc">
/// Original file name
/// </param>
/// <param name="strCopyFolder">
/// Folder in which the copies are located
/// </param>
/// <param name="strOutDoc">
/// The result filename
/// </param>
public void Merge(string strOrgDoc, string strCopyFolder, string strOutDoc)
{
string[] arrFiles = Directory.GetFiles(strCopyFolder);
Merge(strOrgDoc, arrFiles, strOutDoc);
}
}
打开新窗口(JS),老掉牙的东西,直接拷贝省时间的
<script language =javascript>
function WinOpen(url,width,height)
{
var x=(screen.availWidth -width)/2;
var y=(screen.availHeight-height)/2;
msg=window.open(url,"NewWindow","toolbar=no,directories=no,menubar=no,width="+width+"px,height="+height+"x,left="+x+"px,top="+y+"px");
//msg.moveTo(x,y);
msg.document.write("<HEAD><TITLE>HELLO!</TITLE></HEAD>");
msg.document.title="新窗口";
msg.document.bgColor="#d7d9ae";
msg.document.write("<BODY SCROLL=AUTO><CENTER><H1>你好</H1><H2>这是<B>JavaScript</B>所开的窗口</H2></CENTER>");
msg.document.write("<br/><br/><br/><br/><br/><br/><br/><br/><hr color='yellow' size=8><br/><br/><center><font color='red'><a href='javascript:window.close();'>关闭</a></font></center></BODY>");
}
</script>
现在的项目大都与数据库打交道,为了方便客户,要求在部署项目时提供数据库安装应用程序,下面的Code是本人反编译某个项目的数据库安装应用程序(net),相信根据这个示例写出java的代码不是难事!
{
(代码略) //获取关键参数值,主要是(SQL服务器名称,用户名称, 密码,数据库名称,源数据库文件,目标数据库路径),要注意程序的控制这些变量值-非空!
关键代码:
try
{
string connectionString = "server=" + SQL服务器名称
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlDataReader reader = null;
SqlCommand command = new SqlCommand("sp_helpdb", connection);
command.CommandType = CommandType.StoredProcedure;
reader = command.ExecuteReader();
for (int i = 0; i < reader.FieldCount; i++)
{
if (reader.Read() && (reader["name"].ToString() == 数据库名称
{
MessageBox.Show("数据库 " + 数据库名称
this.txtDbIp.Focus();
this.cmdCreate.Enabled = true;
this.cmdExit.Enabled = true;
return;
}
}
command = null;
connection.Close();
if (str6.Substring(str6.Length - 1) != @"\")
{
str6 = str6 + @"\";
}
string strSql = "restore database " +数据库名称
//定义代码(
void DBExecute(SqlConnection connection, string strSql)
{
try
{
connection.Open();
new SqlCommand(strSql, connection).ExecuteNonQuery();
connection.Close();
}
catch (Exception ex)
{
throw new Exception("数据库打开错误。详细:错误发生在" + ex.Source + "的" + ex.Message + "处。");
}
}
//可作出友好提示 messagebox,alert等
}
catch
{//异常处理}
}
◆ 在Asp中使用Jmail,直接使用 Server.CreateObject("Jmail.Message")就可以了
◆ 在.net环境中,需要进行设置
1.安装jmail4.3
2.找到jmail.dll(Program Files\Dimac\w3JMail4下)
3.执行Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin\ildasm.exe(可使用Visual Studio .Net 2005 命令提示),
格式如下:tlbimp c:\Program Files\Dimac\w3JMail4\jmail.dll /out:myJmail.dll /namespace:myJmail
生成myJmail.dll后,copy到web的根目录的bin目录。在ASP.Net页面中,用这个方法引用:
Jmail.aspx
<%@ Page Language="C#" C%>
<%@ Import Namespace="myJmail" %>
<script runat="server">
protected void Page_Load(Object Src, EventArgs E)
{
Message jmail=new Message();
jmail.From="sss";
jmail.AddRecipient("closetome521@sina.com",null,null);//收件人
jmail.MailServerUserName="brookes";
jmail.MailServerPassWord="walkor";
jmail.Subject="jmail c#";
jmail.Send("mail.lsg.com",false);//发送内容
}
</script>
Tlbimp:
Microsoft .Net Framework Type Library to Assembly Converter
真悲哀,一天到晚写这样的代码Button_Click(Object sender, EventArgs e) 还不知道,这发送者send的意义是什么?到底有什么用?今天在网上查了下这么说的
这个Sender 就是我们在这个事件中处理触发这个事件的对象的时候用的。就是说这个
Sender 就是被Click 的button 看个示例:
<input type="submit" id="a1" value="一" runat="server">
<input type="submit" id="a2" value="二" runat="server">
<input type="submit" id="a3" value="三" runat="server">
<input type="submit" id="a4" value="四" runat="server">
这是四个Submit 按钮,他们激发的事件是同一个事件,怎么来区分呢? 看下面的Code
public void Submit_Click(Object sender, EventArgs E)
{
switch (((Control)sender).ID)
{
case "a1":showmsg.Text=""哈哈一; break;
case "a2" :showmsg.Text=""哈哈二; break;
case "a3" :showmsg.Text=""哈哈三; break;
case "a4" :showmsg.Text=""哈哈四; break;
}
}
</script>
<asp:Label id=showmsg runat=server />
代码本身没有什么意思,但是却说明了一个问题,也许这就是这篇文章的意义所在吧
本文讲述使用微软TTS5.1语音引擎(中文)实现文本阅读和音频输出为WAV完美解决方案.
网上很多文章说的是要安装SAPI.51 SDK,而这个东西有好几十M,并且用起来比较复杂。微软官方网站上是这样写的:SAPI5.1 SDK可以从微软网站下载:http://www.microsoft.com/speech/download/sdk51/
进行中文文本的阅读,可以将阅读的语音输出为WAV音频。
实现平台:
Microsoft Visual Studio 2005
微软TTS5.1语音引擎(中文)
所需要的东西:
用TlbImp从SAPI.51 SDK中导出的DotNetSpeech.dll(160K)
微软TTS5.1语音引擎(中文).msi(1.55M)
以上两个东西由于大小关系没有传上来,需要的可以留下邮箱地址。
如果你自己安装了SAPI.51 SDK,可以使用这个命令自己导出DotNetSpeech.dll
Tlbimp sapi.dll /out: DotNetSpeech.dll(出现错误不用管,不影响使用)
安装微软TTS5.1语音引擎(中文).msi,打开"控制面板",打开"语音"配置项目,在"文字-语音转换"的"语音选择"组合框中选择"Microsoft Simplified Chinese",这样才可以读出中文。如果要读英文,要选择"Microsoft Sam"。
使用Microsoft Visual Studio 2005新建项目,添加引用,引用DotNetSpeech.dll。
命名空间:
using DotNetSpeech;
读出文本框中的中文:
SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice voice = new SpVoice();
voice.Speak(textBox1.Text, spFlags);
将文本框中中文的读音保存为WAV文件:
SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice voice = new SpVoice();
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav";
dialog.Title = "保存WAV文件";
dialog.FilterIndex = 2;
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
SpeechStreamFileMode spFileMode = SpeechStreamFileMode.SSFMCreateForWrite;
SpFileStream spFileStream = new SpFileStream();
spFileStream.Open(dialog.FileName, spFileMode, false);
voice.AudioOutputStream = spFileStream;
voice.Speak(textBox1.Text, spFlags);
voice.WaitUntilDone(1000);
上面两句一定要写上,否则产生的文件没有声音
WaitUntilDone的后面的smTimeout是一个int型
spFileStream.Close();
使用C#如何实现Word文档的合并
类和方法说明,Merge(string strOrgDoc, string[] arrCopies, string strOutDoc)方法实现参见
http://www.codeproject.com/office/mswmergecs.asp
public class DocMerger
{
/// <summary>
/// Merge a document with a set of copies
/// </summary>
/// <param name="strOrgDoc">
/// Original file name
/// </param>
/// <param name="arrCopies">
/// File names of the modified files
/// </param>
/// <param name="strOutDoc">
/// The result filename
/// </param>
public void Merge(string strOrgDoc, string[] arrCopies, string strOutDoc)
{ }
/// <summary>
/// Merge a document with a set of copies
/// </summary>
/// <param name="strOrgDoc">
/// Original file name
/// </param>
/// <param name="strCopyFolder">
/// Folder in which the copies are located
/// </param>
/// <param name="strOutDoc">
/// The result filename
/// </param>
public void Merge(string strOrgDoc, string strCopyFolder, string strOutDoc)
{
string[] arrFiles = Directory.GetFiles(strCopyFolder);
Merge(strOrgDoc, arrFiles, strOutDoc);
}
}
打开新窗口(JS),老掉牙的东西,直接拷贝省时间的
<script language =javascript>
function WinOpen(url,width,height)
{
var x=(screen.availWidth -width)/2;
var y=(screen.availHeight-height)/2;
msg=window.open(url,"NewWindow","toolbar=no,directories=no,menubar=no,width="+width+"px,height="+height+"x,left="+x+"px,top="+y+"px");
//msg.moveTo(x,y);
msg.document.write("<HEAD><TITLE>HELLO!</TITLE></HEAD>");
msg.document.title="新窗口";
msg.document.bgColor="#d7d9ae";
msg.document.write("<BODY SCROLL=AUTO><CENTER><H1>你好</H1><H2>这是<B>JavaScript</B>所开的窗口</H2></CENTER>");
msg.document.write("<br/><br/><br/><br/><br/><br/><br/><br/><hr color='yellow' size=8><br/><br/><center><font color='red'><a href='javascript:window.close();'>关闭</a></font></center></BODY>");
}
</script>
浙公网安备 33010602011771号