加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

个人工作总结

发布时间:2020-12-12 15:31:09 所属栏目:MsSql教程 来源:网络整理
导读:经常逛 CSDN ,总是获取,今天看见别人把工作总结写了出来,我也想写一下,虽然可能有错误、很肤浅、很杂、但我还是要写一下。 离开学校半年了,在一小公司打工,属于有什么活做什么事的那种。 ? C++/MFC : 由于 MFC 做的程序很丑( VS2005 及以下),可能

经常逛CSDN,总是获取,今天看见别人把工作总结写了出来,我也想写一下,虽然可能有错误、很肤浅、很杂、但我还是要写一下。

离开学校半年了,在一小公司打工,属于有什么活做什么事的那种。

?

C++/MFC

由于MFC做的程序很丑(VS2005及以下),可能有多种界面解决方案。大公司有自己的图形库,或者买市面上的图形库。但是还有一个方案值得一提,虽然我做的不好,就是CDHtmlDialog类,据说windows XP的控制面板(分类视图)是用的这种方案,还有诺顿的也采用了这种。当然,现在vs2008 sp1就比较好了。

?

API:

???????? GetSystemDirectory(szSysFolder,MAX_PATH);获得系统目录:一般为c:/windows/system32

If0 < GetPrivateProfileString("Server",

??????????????????????????????????????????????????????????????????????????????????? "nHardIDTypeTest",

??????????????????????????????????????????????????????????????????????????????????? NULL,

??????????????????????????????????????????????????????????????????????????????????? szIsOffMode,

??????????????????????????????????????????????????????????????????????????????????? sizeof(szIsOffMode),

??????????????????????????????????????????????????????????????????????????????????? CfgLocalFileName))读取ini文件相应键的值,返回读取的字符个数,所以GetPrivateProfileString()>0表示获得了数据,操作成功

WinExec(FileName,SW_HIDE);运行外部exe

?

int cstring:

int i=11;

cstring cstemp;

cstemp.format(“%d”,i);

?

itoa()

?

Cstring char*

Cstring cstemp =”ddddddddd”;

Cstemp.getbuffer(cstemp.getlength());

?

???????? char *lpAuthoID=new char[csTemp.GetLength()];

???????? memset(lpAuthoID,csTemp.GetLength());

???????? strcpy(lpAuthoID,csTemp);// csTempCstring类型

基于对话框的应用程序中:

InitInstance():初始化实例,,最先执行 return false;表示退出应用程序

OnInitDialog():初始化对话框,,oncancel()表示退出

全局变量与全局函数:放在XXXDlg.cpp文件的即可,或者放在另外一个专门的cpp文件中

成员变量与成员函数:可以通过鼠标操作自动添加

获得控件的数据

GetDlgItem(IDC_EDIT_CLIENTVERSION)->GetWindowText(csClientVersion);

?

文件操作API

?????????? HANDLE hFileBag =CreateFile(csOfflineBagName,

???????????????????????????? ?????????????????????????????????????????????? ? GENERIC_READ,

??????????????????????????????????????????????????????????????????????????? ? FILE_SHARE_READ,

??????????????????????????????????????????????????????????????????????????? ? NULL,

??????????????????????????????????????????????????????????????????????????? ? OPEN_EXISTING,

??????????????????????????????????????????????????????????????????????????? ? FILE_ATTRIBUTE_NORMAL,

??????????????????????????????????????????????????????????????????????????? ? NULL);

?????????? if (hFileBag == INVALID_HANDLE_VALUE)

?????????? {

??????????????????? ::MessageBox(NULL,"无法读取离线包文件","安装",MB_OK);

??????????????????? return ;

?????????? }

?????????? DWORD nFileLen=GetFileSize(hFileBag,NULL);

?

?????????? char szOffFileBuf[1024]={0};;

?????????? DWORD nBytesRead;

?????????? ReadFile(hFileBag,szOffFileBuf,1024,&nBytesRead,NULL);

?????????? CloseHandle(hFileBag);

Strnicmp():比较两个字符串前N个字符,且不区分大小写

?

?????????????????? DWORD nLen=0;

//由于返回的char*中可能含/0,所以CreateClientCfgAll()使用一个输出参数nLen指示char*的长度

?????????????????? char *lpFileBuf=CreateClientCfgAll(lpDB,csUserName,g_HardID,nLen);

?????????????????? if (lpFileBuf != NULL)

?????????????????? {

??????????????????????????? if (nLen > 0)

??????????????????????????? {//创建一个文件

???????????????????????????????????? HANDLE hFileCfgAll =CreateFile(szCfgAllFileName,

??????????????????????????????????????????????????????????????????????????????????????????????????????????????? GENERIC_READ|GENERIC_WRITE,

??????????????????????????????????????????????????????????????????????????????????????????????????????????????? FILE_SHARE_READ,

??????????????????????????????????????????????????????????????????????????????????????????????????????????????? NULL,

??????????????????????????????????????????????????????????????????????????????????????????????????????????????? OPEN_ALWAYS,

??????????????????????????????????????????????????????????????????????????????????????????????????????????????? FILE_ATTRIBUTE_NORMAL,

??????????????????????????????????????????????????????????????????????????????????????????????????????????????? NULL);

???????????????????????????????????? if (hFileCfgAll != INVALID_HANDLE_VALUE)

???????????????????????????????????? {//设置文件指针到文件的起始位置

?????????????????????????????????????????????? SetFilePointer(hFileCfgAll,NULL,FILE_BEGIN);

?????????????????????????????????????????????? DWORD dw;

//向文件写入内容

?????????????????????????????????????????????? WriteFile(hFileCfgAll,lpFileBuf,nLen,&dw,NULL);

//设置文件结束

?????????????????????????????????????????????? SetEndOfFile(hFileCfgAll);?????????????????

//关闭文件句柄

?????????????????????????????????????????????? CloseHandle(hFileCfgAll);

?????????????????????????????????????????????? bWriteCfgAll = TRUE;

???????????????????????????????????? }

??????????????????????????? }

??????????????????????????? delete[] lpFileBuf;

?????????????????? }

?

??????????????????

?

CString csFileName1 = GetRunPath();//获得当前程序的运行路径GetRunPath()不是API

?????????????????? csFileName1+="//FsgDbConnect.cfg";

?

?????????????????? char szFileName2[MAX_PATH]={0};

?????????????????? strcpy(szFileName2,szSysFolder);

?????????????????? strcat(szFileName2,"//FsgDbConnect.cfg");

?????????????????? CopyFile(csFileName1,szFileName2,FALSE);//拷贝文件

?

?

ASP.NET

由于来公司前,ASP.NET从来没摸过,所以下面的总结是很基础的,很初级的。

1.?????? 验证控件之customvalidator:

指定要验证的控件,指定验证函数,在页面代码文件中判断customvalidator.isvalid是否为true

2.?????? 验证控件之CompareValidator:

指定要验证的控件,指定比较的控件,指定Typestringdate等,指定比较方法Operator:大于,小于,大于等于 ,等于 。。。。。

3.?????? 分组验证

有时在同一个页面有多个按钮,每个按钮点击前验证对应的空间,可以用分组的方式,每个空间都有一个“组”属性,给同一组的控件指定相同的组名,按钮控件也要制定

4.?????? pageispostback()可以用来判断是否是第一次加载还是回传加载,如果是第一次加载则返回FALSE,否则TRUE,注意:当你第一次打开一个页面,肯定是返回false,当点击刷新时,它还是返回false,只有当点击按钮后,它就返回true,因为按钮引发回传,回传就要重新加载页面。

5.?????? 有个控件默认就是自动回传,有的没有这个属性,有这个属性的可以设置为不回传,具体设置在这个空间的属性里。

6.?????? Asp.net+sqlserver项目的一般方法:

建立数据库

用动软代码生成器生成每个表的类代码,即数据访问层代码,如

Class xx

{

Private int _s;

Public int s

{

Get{return _s;}

Set{_s =value;}

}

}

APP_CODE中建立相应的类,即业务逻辑层代码。如:

Class _xx

{

Static int insert()

{

String sql = “”;sql语句

Parm;sql语句填写参数

Execute执行sql

}

}

在页面上调用,即表现层。如:

_xx.insert()

7.?????? 公用代码,如一堆命名空间,在N个地方都要用,可以选中它们,把它拖进控件面板中,下次要添加这个代码就直接双击它就可以了。

8.?????? 一般不能获取控件的值的原因都是ispostback的位置不正确引起的

9.?????? Executenonquery:update insert delete语句返回影响的行数,但是对select并不返回

Executedataset:运行select语句产生一个dataset

Executescalar():返回查询的结果集中的第一行的第一列。当select语句需要知道查询出了多少条记录,可以select count(*)……..之后用这个执行,可以达到目标

Executereader:用于select语句,为了提高运行性能而设置的

10.?? viewstate可以保存页面的状态,但是与session不同的是,它不能向其他页面传递数据

11.?? 有时更改源代码后不能及时更新,先刷新数次,之后把IE得历史记录,cookie,临时文件删除就可以了。尤其是js修改后,有时很不容易刷新过来

12.?? Checkbox在默认情况下 isPostBack属性是为False

13.?? ASP.NET调用C的动态库

using System.Runtime.InteropServices;

namespace WebApplication1

{

??? public partial class _Default : System.Web.UI.Page

??? {

??????? //加载DLL动态链接库,第一个是DLL名字

??????? [DllImport("TestDll.dll",ExactSpelling = false,SetLastError = true,CharSet = CharSet.Ansi)]

??????? //你的函数

??????? public static extern bool TestMsg(string srcfile);

?

??????? protected void Button1_Click(object sender,EventArgs e)

??????? {

??????????? TestMsg("hello,world");

??????? }

??? }

}

其中 DLL放在system32

14.ASP.NET获取webconfig中的数据库连接字符串:

using System.Configuration;//先添加.NET引用

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["FSGConnectionString"].ConnectionString);

string str = conn.ConnectionString;

在编写dll时,不要使用cstring做参数!!因为cstring不是一个简单的类型,它要调用构造函数等等。

?

数据库sql server

在一个表中查找某个字段有重复的

select UserGroupName from?? FSG_GROUP?? group by? UserGroupName having? count(UserGroupName)>1?

实现是10想显示为男或女

1.? select?name,Sex= ?

2.? ??case?Sex? ?

3.? ??when?'1'?then?''? ?

4.? ??when?'0'?then?''?

5.? ??end? ?

6.? from?Tablename?

?

SQL日期大小比较

前几年写了个计算日库存程序,这几年风风雨雨都过来,最近一次算日库存时发现了一大的问题,条件语句如下:

where indate>'2007-03-31'?? 如果indate为日期型那么indate大于2007-03-31 0:0:0数据将不包含在内,

必须写为where convert(varchar(10),indate,126)>'2007-03-31'

或者:

select * from tb where riqi between '2009-01-22 00:00:00' and '2009-01-22 23:59:59'

注意:要加上“00:00:00”“23:59:59

?

获取刚刚如何提取刚刚插入到数据库记录的id

1.?????? select MAX(User_ID) from FSG_User(这种方法不好)

2.?????? 十五、不要忽略同时修改同一记录的问题

3.?????? 有时候,两个用户会同时修改同一记录,这样,后一个修改者修改了前一个修改者的操作,某些更新就会丢失。处理这种情况不是很难:创建一个timestamp字段,在写入前检查它,如果允许,就合并修改,如果存在冲突,提示用户。

4.?????? 十六、在细节表中插入纪录时,不要在主表执行SELECT MAX(ID)

5.?????? 这是一个普遍的错误,当两个用户在同一时间插入数据时,这会导致错误。你可以使用SCOPE_IDENTITYIDENT_CURRENTIDENTITY。如果可能,不要使用IDENTITY,因为在有触发器的情况下,它会引起一些问题(详见这里的讨论)。

?

6.?????? select?? ident_current('FSG_User')

?在数据表里用个时间字段,而这个时间是由程插入的?? 也就是??

? DateTime?? CreateTime=DateTime.Now()??

? 然后??

? 执行"insert?? into?? TabName(CreateTime)?? values('"+CreateTime+"')"??

? 然后再"select?? *?? from?? TabName?? where?? CreateTime='"CreateTime"'"??

7.?????? ??就行了,有关文章说时间类型虽然只能表示到秒一级,但实际在内部是以毫秒为单位的,所以这样做应该没什么问题了.

8.?????????? 取得 insert id (在有触发器的情况下可能引发一些问题)

9.?????????? 如果是SQL?? SERVER数据库,你可以使用返回值:??

10.?????? ??先创建一个存储过程:?? ????

11.?????? ??CREATE?? PROCEDURE?? Inserttest??

12.?????? ??????????@name?? AS?? VARCHAR(50)??

13.?????? ??AS??

14.?????? ??INSERT?? INTO?? 数据表?? ([name])?? VALUES?? (@name)?? RETURN?? @@identity?? ?

15.?????? ??调用代码如下:?? ????

16.?????? ??SqlCommand?? cmd?? =?? new?? SqlCommand("Inserttest",?? sqlConn);??

17.?????? ??cmd.CommandType?? =?? CommandType.StoredProcedure;??

18.?????? ??SqlParameter?? param?? =?? cmd.Parameters.Add("RETURN_VALUE",?? SqlDbType.Int);??

19.?????? ??param.Direction?? =?? ParameterDirection.ReturnValue;??

20.?????? ??cmd.Parameters.Add("@name",?? SqlDbType.VarChar).Value?? =?? "abc";??

21.?????? ??cmd.ExecuteNonQuery();??

22.?????? ??int?? nID?? =?? (int)cmd.Parameters["RETURN_VALUE"].Value;

?

select * from FSG_Client where datediff(mi,Client_HeartBeatTime,getdate())<3 and datediff(mi,getdate())>0

说明:用于查找在线客户端,客户端每1分钟向Client_HeartBeatTime字段写入当前时间

?

SqlServer2008有时不能连接上去:

在开始--运行中输入:net ?start ?mssqlserver

在数据库表中,加一个“删除标记”的字段的好处:

删除标记

  在表中包含一个“删除标记”字段,这样就可以把行标记为删除。在关系数据库里不要单独删除某一行;最好采用清除数据程序而且要仔细维护索引整体性。

?

给文本字段留足余量:

比如,以前身份证是15位的时候,你应该留18位或者更多,现在身份证变成了18位,如果没有留足,这将成为你项目中一个惨痛的例子

int.TryParse的作用:如下

?if (!int.TryParse(tb_TimeofCheckSelf.Text.ToString().Trim(),out i))

??????? {

?????????? ?MessageBox.Show(this,"自检时间格式不正确(不为数字)");

??????????? return;

??????? }

string转换成int,若string中的的元素不全为数字,则返回FALSE

?

删除表结构中的一个字段

alter table FSG_User drop column User_Autho

select * from FSG_User

?

删除表数据,并且自增流水号清空置1

truncate table test

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读