网站建设 郑州网站建设 网站制作 网页设计 网站设计 郑州建网站 - 爱易在线

网站地图 | 网站Tags标签 | RSS订阅 | 加入收藏
您的位置:网站首页 > 博客笔记 > 技术交流 > 正文 技术交流相关信息

扣扣群数据库使用过程中遇到的问题记录

作者:郑州网站建设 2016/11/25 10:14:06 点击: 来源:

1、附加数据库

下载的文件为sql2000的,sqlserver版本不能超过2008r2,不然不能完成附加

附加数据库sql语句如下:

EXEC sp_attach_db "QunInfo1", "H:\QunData\QunInfo1_Data.MDF"
EXEC sp_attach_db "QunInfo2", "H:\QunData\QunInfo2_Data.MDF"
EXEC sp_attach_db "QunInfo3", "H:\QunData\QunInfo3_Data.MDF"
EXEC sp_attach_db "QunInfo4", "H:\QunData\QunInfo4_Data.MDF"
EXEC sp_attach_db "QunInfo5", "H:\QunData\QunInfo5_Data.MDF"
EXEC sp_attach_db "QunInfo6", "H:\QunData\QunInfo6_Data.MDF"
EXEC sp_attach_db "QunInfo7", "H:\QunData\QunInfo7_Data.MDF"
EXEC sp_attach_db "QunInfo8", "H:\QunData\QunInfo8_Data.MDF"
EXEC sp_attach_db "QunInfo9", "H:\QunData\QunInfo9_Data.MDF"
EXEC sp_attach_db "QunInfo10", "H:\QunData\QunInfo10_Data.MDF"
EXEC sp_attach_db "QunInfo11", "H:\QunData\QunInfo11_Data.MDF"
          
EXEC sp_attach_db "GroupData1", "H:\QunData\GroupData1_Data.MDF"
EXEC sp_attach_db "GroupData2", "H:\QunData\GroupData2_Data.MDF"
EXEC sp_attach_db "GroupData3", "H:\QunData\GroupData3_Data.MDF"
EXEC sp_attach_db "GroupData4", "H:\QunData\GroupData4_Data.MDF"
EXEC sp_attach_db "GroupData5", "H:\QunData\GroupData5_Data.MDF"
EXEC sp_attach_db "GroupData6", "H:\QunData\GroupData6_Data.MDF"
EXEC sp_attach_db "GroupData7", "H:\QunData\GroupData7_Data.MDF"
EXEC sp_attach_db "GroupData8", "H:\QunData\GroupData8_Data.MDF"
EXEC sp_attach_db "GroupData9", "H:\QunData\GroupData9_Data.MDF"
EXEC sp_attach_db "GroupData10", "H:\QunData\GroupData10_Data.MDF"
EXEC sp_attach_db "GroupData11", "H:\QunData\GroupData11_Data.MDF"

2、建立索引

IF not EXISTS (SELECT indid FROM GroupData9.dbo.sysindexes WHERE name = 'ix_QQNum_Group801')
CREATE INDEX ix_QQNum_Group801 On GroupData9.dbo.Group801(QQNum);
IF not EXISTS (SELECT indid FROM GroupData9.dbo.sysindexes WHERE name = 'ix_QQNum_Group802')
CREATE INDEX ix_QQNum_Group802 On GroupData9.dbo.Group802(QQNum);
IF not EXISTS (SELECT indid FROM GroupData9.dbo.sysindexes WHERE name = 'ix_QQNum_Group803')
CREATE INDEX ix_QQNum_Group803 On GroupData9.dbo.Group803(QQNum);

因为需要建立索引的表太多了,复制的话要累死人的,so,程序生成之,C#代码如下:

private static StringBuilder GetSqlIndexStr()
        {
            StringBuilder sb = new StringBuilder();
       
            for (int j = 1; j <= 11; j++)
            {
                for (int i = 1; i <= 100; i++)
                {
                    int temp = 100 * j + i - 100;
                    sb.Append(string.Format("IF not EXISTS (SELECT indid FROM GroupData{1}.dbo.sysindexes WHERE name = 'ix_QQNum_Group{0}')", temp.ToString(), j.ToString()));
                    sb.Append("\r\n");
                    sb.Append(string.Format("CREATE INDEX ix_QQNum_Group{0} On GroupData{1}.dbo.Group{0}(QQNum);", temp.ToString(), j.ToString()));
                    sb.Append("\r\n");
                }
                sb.Append("\r\n");
                sb.Append("\r\n");
            }
            return sb;
        }

注意:建立索引过程中,最好分批执行建索引的sql语句,不然可能会卡死。


3、查询(建立存储过程)

(1)查询QQ信息

CREATE PROCEDURE REN_CX @QQNum int=null
AS
BEGIN
declare @sql varchar(8000)
declare @dbIdx int = 1
-------------------------------------------------------------
if OBJECT_ID('tempdb.dbo.#QunList') is not null
drop table #QunList
   
--新建了一个临时表
create table #QunList
(
QQNum int,
Nick varchar(20),
Age int,
Gender int,
Auth int,
QunNum int
)
   
--------------------------------------------------------------
-- Search QunList
--一个嵌套循环查找 一个表一个表找,找到一个插入临时表一条
while @dbIdx <= 11
begin
declare @tblIdx int = 1
declare @tblName varchar(50)
   
while @tblIdx <= 100
begin
set @tblName = 'GroupData' + CONVERT(varchar(2), @dbIdx) + '.dbo.Group'
set @tblName += CONVERT(varchar(5), (@dbIdx - 1) * 100 + @tblIdx)
   
set @sql = 'select QQNum, Nick, Age,Gender, Auth,QunNum from '
set @sql += @tblName + ' where QQNum=' + CONVERT(varchar(15), @QQNum)
   
insert into #QunList(QQNum, Nick,Age,Gender,Auth,QunNum)  exec(@sql)
   
print @tblname + ' OK'
   
set @tblIdx += 1    --循环递增
end
   
set @dbIdx += 1   --外层递增
end
   
-----------------------------------------------------------------------
--显示
   
select * from #QunList
END
GO

(2)查询群消息

--建立查询群信息的存储过程
CREATE  PROCEDURE QUNXX_CX @QunNum int=null
as
BEGIN
declare @sql varchar(8000)
set @sql = 'select QunNum,Title,QunText from QunInfo' + CONVERT(varchar(5), @QunNum / 10000000 + 1) + '.dbo.'
set @sql += 'QunList' + CONVERT(varchar(10), @QunNum / 1000000 + 1) + ' where QunNum=' + Convert(varchar(20),@QunNum)
exec(@sql)
print(@sql)
END
GO

(3)查询群成员

--建立群成员的存储过程
CREATE  PROCEDURE QUNCY_CX @QunNum int=null
as
BEGIN
declare @sql varchar(8000)
   
--群成员
set @sql = 'select * from GroupData' + CONVERT(varchar(5), @QunNum / 10000000 + 1) + '.dbo.'
set @sql += 'Group' + CONVERT(varchar(10), @QunNum / 100000 + 1) + ' where QunNum=' + Convert(varchar(20),@QunNum)
   
exec(@sql)
print(@sql)
END
GO

执行完上面的3个SQL,存储过程就那建好了。

下面为执行:

EXEC  REN_CX    QQ号
EXEC  QUNXX_CX  群号
EXEC  QUNCY_CX  群号

4、C#查询

关键代码如下:

//数据库连接
SqlConnection coon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
    DataSet finaldata = new DataSet();   
   
    public DataSet QueryREN(string _QueryREN)
    {
        string sqlstr = " EXEC REN_CX   "+ _QueryREN;   //执行存储过程
        SqlDataAdapter da = new SqlDataAdapter(sqlstr, coon);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
}
//单击事件
    protected void Button1_Click(object sender, EventArgs e)
    {
        string ren = TextBox1.Text;
        try
        {
            if (ren != null || Convert.ToInt32(ren) > 10000)
            {
                if (QueryREN(ren) == null || QueryREN(ren).Tables[0].Rows.Count == 0)
                { Label1.Text = "查无此人"; }
                else
                {
                    finaldata.Merge(QueryREN(ren));
                    GridView1.DataSource = finaldata;    //绑定数据
                    GridView1.DataBind();   
                }
            }
            else
            {
                Label1.Text = "重新输入";
            }
        }
        catch(Exception ex)
        {Label1.Text = "BUG:"+ex.ToString();    //BUG测试
        }
    }



Tag:
分享到:

上一篇:阿里云虚拟主机UrlRewrite实现301重定向

下一篇:SQLServer 高效去重方法

技术交流推荐阅读

用户评论

最新博文

热门排行

推荐信息

关于爱易| 付款方式| 联系我们| 网站地图| 网站Tags标签 | RSS订阅