使sqlserver登录用户和数据库的孤立用户对应起来

发布于:
服务器技术

  其实我们建立了同样名称的数据库登录用户后,数据库中的表我们照样不能使用时因为sid的不同,就是系统登录表和数据库用户表中的用户名相同,单是sid字段,数据库中的还是以前旧系统的sid值,所以我们就要把它对应成我们新建的,数据库靠sid来识别用户。

        这里可以使用存储过程sp_change_users_login。它有三种动作,分别是report,update_one和auto_fix。

        运行sp_change_users_login ‘report’,系统会列出当前数据库的孤立用户数。
        我们只需要选择当前数据库为testdb,然后运行
        sp_change_users_login ‘update_one’,’test’,’test’
        系统就会提示修复了一个孤立用户。
        如果没有建立test的登录用户,还可以用
        sp_change_users_login ‘Auto_Fix’, ‘test’, NULL, ‘testpassword’
        来创建一个登录用户名为test,密码为testpassword的用户与之对应。

   好了,到这里通常情况下,数据库对象得到访问问题已经解决了。如果有多个数据库中有同一个用户的数据表,只需要选择不同的数据库,执行update_one的那个就行了。

SQLite使用全局事务

发布于:
服务器技术

  根据SQLite 的原子提交原则,任何时候,都只有一个排它的"写入锁",当一个事务发生了写入操作,其后任何其他线程/进程都将不能写入数据库的任何一部分.

  测试表明,如果发生并发写入,线程将陷入停顿状态,竞争锁的双方都不能继续往下执行.这将导致严重的并发问题.

  由上面的分析得知,尽管SQLite可以同时使用多个事务,但始终只用一个事务能够写入数据,所以,可以等同的认为,SQLite只用一个事务.

 * 注:普通的查询操作也是默认带事务的.

     申明一个全局(静态)的事务对象,在程序任何地方使用事务,都将使用该事务对象。如果同时有其他的更新操作,也将使用该事务对象,从而保证所有的事务操作 为一个事务对象,避免数据库被其他线程锁定。另外,由于没有使用分散的多个事务,有助于改善应用程序的整体性能。

 * 注:本策略不适合高度并发的场合,如果想取得较高的并发性能,请尽量缩短事务使用的时间,或者使用其他RDBMS。

sqlite3数据库 数据库基本管理

发布于:
服务器技术
  ---sqlite3数据库 整个数据库备份
C:>sqlite3 test.sqlite3
SQLite version 3.5.4  
Enter ".help" for instructions  
sqlite> .output test.sqlite3.sql  
sqlite> .dump  
sqlite> .exit  
C:> sqlite3
---数据库 单个表备份
C:>sqlite3 test.sqlite3
SQLite version 3.5.4
Enter ".help" for instructions  
sqlite> .tables  messages     schema_info  
sqlite> .output test_messages.sqlite3.sql  
sqlite> .dump messages  
sqlite> .exit
C:> sqlite3
---数据库 恢复,适合整库及单表
C:>sqlite3 new.sqlite3
SQLite version 3.5.4
Enter ".help" for instructions  
sqlite> .read test.sqlite3.sql  
sqlite> .exit
C:>

.NET牛人应该知道些什么 转

发布于:
Microsoft.Net

  前些日子我发了一份ASP.NET面试题 清单. 有一些访客比较保守,觉得我是没事找事,里面都是些很琐碎的问题。剩下的人则说“蛮不错的,我得去看一看其中的一些问题” 我更喜欢后者的回复,我觉得后者才是正确的态度。

  当然我并不想把.NET软件开发概括为一些简单的小问题,我只是想让大家多思考。我相信一个真正优秀的ASP.NET(及WinForm)开发人员应该不仅仅会拖放控件到设计器中,也应该掌握更多的东西。一个优秀的赛车比赛选手很了解他自己的坐驾,他知道哪些可以做?哪些不能做?

  所以我准备了另外一份清单——一份扩展的清单,供你使用。这是我上个星期在从博伊西去波特兰的路上写在一块板上的,并且我也考虑到了那些觉得我的清单过于琐碎的意见,试图把这个清单按节管理。如果你从来没有深入ASP.NET,你肯定不会知道所有ASP.NET问题的答案。如果你是一个独立顾问,你可能从来没有遇到过这些概念。但在我呆在科林斯的这4年中,这些问题我都遇到过。因此,是否全面理解这些问题也许与你是不是一个优秀的开发者没有关系,但在遇到问题时它的确可以帮你节省不少时间。

C++读书列表

发布于:
其他(计算机)

参考手册
1. The C++ Programming Language (Special Edition), Bjarne Stroustrup
    裘宗燕(译), 机械工业出版社
    C++始创者、一代宗师Bjarne Stroustrup的经典之作,仅次于C++标准的权威书籍。
2. C++ Primer 3th, Stanley B.Lippman, Josee Lajoie
    潘爱民(译), 张丽(译), 中国电力出版社
    C++元老Stanley B.Lippam撰写的C++语法、语义层面的百科全书,极具参考价值。
3. The C++ Standard Library : A Tutorial and Reference, Nicolai M. Josuittis
    侯捷(译), 孟岩(译), 华中科技大学出版社。
专业C++程序员必备的C++标准程序库(ISO98)的参考手册,也是新手学习标准库的良好教程。

如何有效编写软件的75条建议

发布于:
服务器技术

1. 你们的项目组使用源代码管理工具了么?
  应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。

2. 你们的项目组使用缺陷管理系统了么?
  应该用。ClearQuest太复杂,我的推荐是BugZilla。

3. 你们的测试组还在用Word写测试用例么?
  不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是Track和Browse。

4. 你们的项目组有没有建立一个门户网站?
  要有一个门户网站,用来放Contact Info、Baselined Schedule、News等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)。

5. 你们的项目组用了你能买到最好的工具么?
  应该用尽量好的工具来工作。比如,应该用VS.NET而不是Notepad来写C#。用Notepad写程序多半只是一种炫耀。但也要考虑到经费,所以说是“你能买到最好的”。

6. 你们的程序员工作在安静的环境里么?
  需要安静环境。这点极端重要,而且要保证每个人的空间大于一定面积。 

让Sqlite3以GB2312编码存储汉字

发布于:
Microsoft.Net

Sqlite3内部采用UTF8存储,但是为转成GB2312就必须调用编码函数,太麻烦了,于是今天琢磨出一种让sqlite3内部存储汉字采用GB2312的方法,将字段设为BLOB,然后保存汉字的GB2312编码的字节数组就OK了。但是把词库的所有字段从TEXT转换成BLOB,结果查询时用where word = ’hello’竟然无法查询出结果,随手改成where word like ’hello’竟然可以,估计是BLOB无法用”=”查询。

using System;
using System.Text;
using System.Data;
using Finisar.SQLite;


namespace SqliteConvert
{
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            //
            // TODO: 在此处添加代码以启动应用程序
            //




            //打开以前的库
            SQLiteConnection sqliteConn = new SQLiteConnection(@"Data Source=d:projectDrEye.db;New=False;Compress=True;Version=3;");
            sqliteConn.Open();
            SQLiteDataAdapter sqliteDa = new SQLiteDataAdapter("select * from DrEye",sqliteConn);
            DataSet sqliteDs = new DataSet();
            sqliteDa.Fill(sqliteDs);




            //创建新库
            SQLiteConnection sqliteConnNew = new SQLiteConnection(@"Data Source=d:projectDrEye.new1.db;New=True;Compress=True;Version=3");
            sqliteConnNew.Open();


            //建表
            SQLiteCommand sqliteCmdNew = sqliteConnNew.CreateCommand();
            sqliteCmdNew.CommandText = "CREATE table DrEye (word TEXT Primary Key,explanation BLOB,InflectedForm BLOB)";
            sqliteCmdNew.ExecuteNonQuery();


            //插入数据
            SQLiteDataAdapter sqliteDaNew = new SQLiteDataAdapter("select * from DrEye", sqliteConnNew);
            SQLiteCommandBuilder sqliteCbNew = new SQLiteCommandBuilder(sqliteDaNew);


            DataSet sqliteDsNew = new DataSet();
            sqliteDaNew.Fill(sqliteDsNew);


            Console.WriteLine(sqliteDs.Tables[0].Rows.Count);
            Console.WriteLine(sqliteDsNew.Tables[0].Rows.Count);


            foreach(DataRow dr in sqliteDs.Tables[0].Rows)
            {




                DataRow sqliteDrNew = sqliteDsNew.Tables[0].NewRow();
                sqliteDrNew[0] = dr[0];
                sqliteDrNew[1] = EncodingConvert(dr[1].ToString());
                if (dr[2].ToString() != "")
                {
                    sqliteDrNew[2] = EncodingConvert(dr[2].ToString());
                }
                sqliteDsNew.Tables[0].Rows.Add(sqliteDrNew);
                break;
            }
            sqliteDaNew.Update(sqliteDsNew);




            Console.WriteLine("Game over!");
            Console.ReadLine();
        }


        //将字符串转换成字节
        static byte[] EncodingConvert(string utf8String)
        {


            byte[] ansiCode;
            ansiCode = Encoding.Default.GetBytes(utf8String);
            return ansiCode;
        }
    }
}

 

用这个连接串存储中文

SQLiteConnection conn = new SQLiteConnection();
conn.ConnectionString = "Data Source=test1.db;New=False;Compress=True;Synchronous=Off;UTF8Encoding=True;Version=3";

 

 

sqlite怎么读不出中文来

发布于:
Microsoft.Net
using System;   
using System.Data.SQLite;   
using System.Configuration;   
using System.Web;   
using System.Web.Security;   
using System.Web.UI;   
using System.Web.UI.WebControls;   
using System.Web.UI.WebControls.WebParts;   
using System.Web.UI.HtmlControls;   
using System.Data;   
  
/// <summary>   
/// sqlite 的摘要说明   
/// </summary>   
public class sqlite   
{   
   SQLiteConnection con;   
   public sqlite()   
   {   
       //   
       // TODO: 在此处添加构造函数逻辑   
       //   
       con = new SQLiteConnection(@"Data Source=D:My DocumentsVisual Studio 2005WebSitesajaxtestApp_Datanews2.sqlite");   
   }   
   public void exesql(string cmdtxt)   
   {   
       SQLiteCommand cmd = new SQLiteCommand(cmdtxt, con);   
       con.Open();   
       cmd.ExecuteNonQuery();   
       con.Close();   
   }   
   public Table getre(string cmdtxt)   
   {   
       Table tb = new Table();   
       SQLiteCommand cmd = new SQLiteCommand(cmdtxt, con);   
       con.Open();   
       SQLiteDataReader dr=cmd.ExecuteReader();   
       while (dr.Read())   
       {   
           TableRow nrow = new TableRow();   
           for (int i = 0; i < dr.FieldCount; i++)   
           {   
               TableCell tc = new TableCell();   
               tc.Text = dr[i].ToString();   
               nrow.Cells.Add(tc);   
           }   
           tb.Rows.Add(nrow);   
       }   
       con.Close();   
       return tb;   
   }   
  
}   

自己写的sqlite操作类如上,使用命令行可以显示中文。自己调用方法如下

using System;   
using System.Data;   
using System.Configuration;   
using System.Collections;   
using System.Web;   
using System.Web.Security;   
using System.Web.UI;   
using System.Web.UI.WebControls;   
using System.Web.UI.WebControls.WebParts;   
using System.Web.UI.HtmlControls;   
  
public partial class sltest : System.Web.UI.Page   
{   
    protected void Page_Load(object sender, EventArgs e)   
    {   
        if (!IsPostBack)   
        {   
            sqlite sl = new sqlite();   
            //sl.exesql("insert into msg values(1,'sasdasd','asdlkjalksdjsd',2007-06-14)");   
            Table tb = sl.getre("select * from msg");   
            Response.Write(tb.Rows[0].Cells[1].Text);   
  
  
        }   
    }   
}

编码UTF8和UTF16都试过,这是怎么回事呢?

asp.net 2.0使用sqlite!

发布于:
Microsoft.Net

以往大家在asp.net开发小型项目经常使用Access,现在可以使用sqlite。
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括:

事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。
零配置——不需要安装和管理。
实现了绝大多数SQL92标准。 (不支持的特性)
整个数据库存储在一个单一的文件中。
数据库文件可以在不同字节序的机器之间自由地共享。
支持最大可达2T的数据库。 (241 字节)
字符串和BLOB类型的大小最大可达 2G 字节(231字节)。
小的代码: 完整配置的少于250KB,忽略一些可选特性的少于150KB。
在大多数常见操作上比流行的客户/服务器数据库引擎更快。
简单,易于使用的API。
内建TCL绑定。 另外提供可用于许多其他语言的绑定。
具有良好注释的源代码,95%经过测试。
独立:没有外部依赖。
源代码位于公共域。 可用于任何用途。

使用非常简单,使用安装上面二进制包直接使用VS2005的连接到数据库,
下面是简单的使用sqlite代码,和access一样。使用前需要先添加引用,需要引用的dll就在安装目录下面

SQLiteConnection con = new SQLiteConnection("Data Source=D:\foo.db;");

//con.Database = @"D:foo.db";
string cmdtxt = "select * from film";
SQLiteCommand cmd = new SQLiteCommand(cmdtxt, con);
con.Open();
try
{
    Console.WriteLine(cmd.ExecuteScalar());
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}
con.Close();

 

SQLite使用

发布于:
服务器技术

目录

1 建立数据库档案
2 在sqlite3提示列下操作
3 SQL的指令格式
4 建立资料表
5 建立索引
6 加入一笔资料
7 查询资料
8 如何更改或删除资料
9 其他sqlite的特别用法
10 小结 
 

建立数据库档案
用sqlite3建立数据库的方法很简单,只要在shell下键入(以下$符号为shell提示号,请勿键入):

$ sqlite3 foo.db
如果目录下没有foo.db,sqlite3就会建立这个数据库。sqlite3并没有强制数据库档名要怎么取,因此如果你喜欢,也可以取个例如foo.icannameitwhateverilike的档名。