学习第十六天@数据库操作

 

问题:

不断变换IP可以减少邮件群发中的垃圾邮件吗?会不会提高发送成功率?
根据我们的经验,变换IP发送非但没有效果,而且容易造成发送帐号被永久性禁用。
我们都知道,一般上网用的IP是动态分配的。试想,邮件服务器将你的IP地址封杀了,你换了IP,这个IP就会被分配到其他上网用户那里。为什么呢?因为这个IP如果没有被其他上网用户占用,那么你下次拨号上网的时候,交换机还是会优先将这个IP给你的。所以,你得到了其他IP,原来的IP肯定已经给别人用了。这是基于前面所述的原因,群发性能好的邮件发送服务器(SMTP)都不会以封IP左右限制邮件群发的手段,因为这样做的代价是殃及无辜的上网用户。目前市面上好多软件都号称可以变化IP,其实功能实现很简单,但是对于群发邮件完全没有帮助;另一方面,一个邮件发送帐号不断来自变换的IP,会让SMTP(邮件发送服务器)认为这个帐号在发送垃圾邮件,而且是恶意的,进而暂时屏蔽网段,并且永久封杀你的Email帐号。

问题:

如何追踪邮件营销效果呢? http://www.abot.cn/ema
这里我们提供三种方式供大家参考。
(1)根据网页链接追踪
在多媒体邮件中设置超级链接,等待收件人去点击,格式为:
<a href="http://qunfa.abot.cn/post/4.html" target="_blank">http://qunfa.abot.cn/post/4.html</a>
或者
<a href="http://qunfa.abot.cn/post/4.html" target="_blank">点击这里查看详细信息</a>
如果您的链接是主页,为了区别于来自这次群发的Email邮件,可以这样设置:
<a href="http://qunfa.abot.cn/?from_id=email001" target="_blank">点击这里访问主页</a>
或者
<a href="http://qunfa.abot.cn/?from_id=email001" target="_blank">http://qunfa.abot.cn</a>
其中的?from_id=email001,是用来标识访问来源的,您的网站不需要真正去处理这个标识,但是您网页上的计数器,都是可以识别出来的,而且会区别于您的首页,来分别计数。
(2)根据图片链接追踪
并不是所有的收件人都会点击你Email中的链接,如果还需要进一步追踪,那么可以在多媒体邮件中引用图片,格式为:
<img src="http://qunfa.abot.cn/images/Group_Mail_update_20081029.gif" />
不过这要求您有权限去读取IIS服务器或者Apache服务器的日志信息,这些日志信息会详细记录每个文件每天被读取的次数,只要你的图片文件是邮件群发时候专用的,不被其他网页或者在自己的网站引用,那么统计出来的结果是接近于真实数据的。
另一种更简便的方式,就是设置虚拟图片,例如:
<img src="http://qunfa.abot.cn/state.asp?id=ab3234cdfddf" />
没一封email中的内容可以设置为不同,也可以设置相同,而state.asp这个文件,则是用于统计对应的id值被请求的次数,这个就是邮件被打开阅读的次数。
(3)根据阅读回执追踪
在群发Email的时候,使用爱博邮件群发系统,可以选中“要求对方发送阅读收条”,这样对方收到Email的时候,他们的邮件阅读工具都会提示发送阅读回执。
当然啦,收件人愿不愿意发送就管不着啦,发送Email不是发送快递,一定要对方签收快递公司才完成任务,SMTP(发送服务器)是不管的,和日常生活中的普通信件一样,送到传达室,邮件任务就完成了。

问题:

为什么使用smtp.gmail.com不能正常发邮件?

原因是没有指定SmtpClient:client.EnableSsl = true;

这个在gmail中是必须指定的。其他的邮件服务器则不用。

问题:

把一个大型Txt文件导入到SQL Server?

SELECT * INTO EMails from openrowset('MSDASQL','Driver={Microsoft Text Driver(*.txt)};DefaultDir=f:\resource;','select * from xh.txt')

消息15281,级别16,状态1,第1 行

SQL Server 阻止了对组件'Ad Hoc Distributed Queries' 的STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure 启用'Ad Hoc Distributed Queries'。有关启用'Ad Hoc Distributed Queries' 的详细信息,请参阅SQL Server 联机丛书中的"外围应用配置器"。

可以使用 SQL Server 中的方面来配置启用和禁用 SQL Server Management Studio 功能。

使用方面配置外围应用

  1. 在 Management Studio 中,连接到 SQL Server 的组件。
  2. 在对象资源管理器中,右键单击服务器,然后单击方面
  3. 查看方面对话框中,展开方面列表,然后选择相应的外围应用配置器方面(外围应用配置器“Analysis Services 的外围应用配置器“Reporting Services 的外围应用配置器)。
  4. 方面属性区域,选择要用于每个属性的值。
  5. 单击“确定”。

clip_image001

clip_image003

也可以使用sp_configure存储过程来实现 :

使用 sp_configure 时,您必须在设置配置选项后运行 RECONFIGURE 或 RECONFIGURE WITH OVERRIDE。RECONFIGURE WITH OVERRIDE 语句通常专门用来设置那些使用起来应当十分小心的配置选项。但是,RECONFIGURE WITH OVERRIDE 可用于所有的配置选项,并且可以用它代替 RECONFIGURE。

若要配置高级选项,必须先在将 'show advanced options' 选项设置为 1 时运行 sp_configure,然后运行 RECONFIGURE,如下面的示例所示。

sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

sp_configure 'cursor threshold', 0;

GO

RECONFIGURE;

GO

本例中:

sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

sp_configure 'ad hoc distributed queries',0

GO

RECONFIGURE;

配置选项在下面两种情况下生效:

· 在设置选项并发出 RECONFIGURE(在某些情况下为 RECONFIGURE WITH OVERRIDE)语句之后立即生效。

-或-

· 执行以上操作并重新启动 SQL Server 实例之后生效。

不知道为什么,重新启动数据库后没有生效。

只能用手动操作了。

手工 设置完成。

clip_image004

导入大型txt文件 到Sql server

SELECT * INTO EMails from openrowset('MSDASQL','Driver={Microsoft Text Driver(*.txt)};DefaultDir=f:\resource;','select * from xh.txt')

解决办法:

发现这种方法问题还是比较大的,改用下面方法:

/** 导入文本文件

EXEC master..xp_cmdshell 'bcp DatabaseName..TableName in FilePath -c -SServerName -UUser -PPassword'

示例如下:

/** 导入文本文件

EXEC master..xp_cmdshell 'bcp LearnMVC..PhoneNo in "F:\phone.txt" -c -SBLUESKY\SQL2008 -Usa –P123'

问题:


java正则表达式提取邮件地址

private boolean getALlAdress(String email){   
        String msg = null;   
        
        Pattern p = Pattern.compile("\\w+@(\\w+.)+[a-z]{2,3}");   
        Matcher m = p.matcher(email);   
        while (m.find()) 
     {
           msg =matcher.group();
         System.out.println(msg);   
      }
    }

MailRegExp = "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" '电子邮件正则表达式

问题:

SQL如何统计字符串长度?

select len('mumu_karen@yahoo.com.cn')

问题:

如何自定义web.config的节点?

自定义Web.config文件配置节

  自定义Web.config文件配置节过程分为两步。

  一是在在配置文件顶部 <configSections> 和 </configSections>标记之间声明配置节的名称和处理该节中配置数据的 .NET Framework 类的名称。

  二是在 <configSections> 区域之后为声明的节做实际的配置设置。

  示例:创建一个节存储数据库连接字符串

  <configuration>

  <configSections>

  <section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

  </configSections>

  <appSettings>

  <add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/>

  </appSettings>

  <system.web>

......

  </system.web>

</configuration>

问题:

怎么访问web.config节点的内容?

访问Web.config文件

  你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。

vb.net

Dim sconstr As String = System.Configuration.ConfigurationManager.AppSettings("ConnectionString")

c#

ConnectionString string=System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];

获取连接字符串:

string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["LearnMVCEntities"].ToString();

其中,. ConfigurationManager之后是节点名,字典里的是该节点下子节点的name值。

问题:

如何使用CHECK约束?

SQL CHECK 约束

CHECK 约束用于限制列中的值的范围。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

SQL CHECK Constraint on CREATE TABLE

下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。

如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)

SQL CHECK Constraint on ALTER TABLE

如果在表已存在的情况下为 "Id_P" 列创建 CHECK 约束,请使用下面的 SQL:

MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (Id_P>0)

如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

撤销 CHECK 约束

如需撤销 CHECK 约束,请使用下面的 SQL:

SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person

可视化操作:

打开表设计,右键点击,找到“CHECK约束”

clip_image005

点击“添加”:

clip_image006

在右边的表达式添加表达式,诸如:

例如,假设 authors 表中包含一个 zip 列,此列包含的字符串必须为 5 位。下面的示例约束表达式可保证只允许 5 位的数字:

zip LIKE '[0-9][0-9][0-9][0-9][0-9]'

但实际上,使用Like并不能达到效果。

而且正则表达式似乎也支持得并不好。

问题:

怎么使用唯一性约束?

可以使用 UNIQUE 约束确保在非主键列中不输入重复的值。尽管 UNIQUE 约束和 PRIMARY KEY 约束都强制唯一性,但想要强制一列或多列组合(不是主键)的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束。

可以对一个表定义多个 UNIQUE 约束,但只能定义一个 PRIMARY KEY 约束。

而且,UNIQUE 约束允许 NULL 值,这一点与 PRIMARY KEY 约束不同。不过,当与参与 UNIQUE 约束的任何值一起使用时,每列只允许一个空值。

FOREIGN KEY 约束可以引用 UNIQUE 约束。

可视化操作:

打开表设计:

clip_image007

选择“索引/键”

点击“添加”,选中要加唯一约束的列,在“是唯一的”选择“是”。

clip_image008

原文地址:https://www.cnblogs.com/xiaxiazl/p/2356481.html