问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c sqlserver 操作

发布网友 发布时间:2022-04-08 22:28

我来回答

2个回答

懂视网 时间:2022-04-09 02:49

<summary> /// 集合写出Xml /// </summary> /// <typeparam name="T"></typeparam> /// <param name="ls"></param> public static void DataToXml<T>(List<T> ls,string path) { XmlDocument xmldoc = new XmlDocument(); //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?> XmlDeclaration xmldecl; xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null); xmldoc.AppendChild(xmldecl); //加入一个根元素 var xmlelem = xmldoc.CreateElement("", "Nodes", ""); xmldoc.AppendChild(xmlelem); //加入另外一个元素 foreach (T s in ls) { XmlNode root = xmldoc.SelectSingleNode("Nodes"); XmlElement xe1 = xmldoc.CreateElement("Node"); foreach (PropertyInfo pi in typeof(T).GetProperties()) { object value = null; if (s != null) { value = pi.GetValue(s, null); XmlElement xesub1 = xmldoc.CreateElement(pi.Name); xesub1.InnerText = value == null ? "" : value.ToString(); xe1.AppendChild(xesub1); root.AppendChild(xe1); } } } //保存创建好的XML文档 xmldoc.Save(path); } View Code 技术分享
/// <summary>
 /// Xml生成实体集合
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="xmlpath"></param>
 /// <returns></returns>
 public static List<T> getxmltomodel<T>(string xmlpath)
 {
  try
  {
  #region 遍历xml
  XmlDocument _xm = new XmlDocument();
  _xm.Load(xmlpath);

  XmlNodeList xmList = _xm.SelectNodes("/pma_xml_export/database/table");
  List<T> _ls = new List<T>();
  foreach (XmlNode pageNode in xmList)
  {

   T _m = Activator.CreateInstance<T>();
   foreach (PropertyInfo pi in typeof(T).GetProperties())
   {

   foreach (XmlNode nd in pageNode.ChildNodes)
   {
    XmlElement element = (XmlElement)nd;
    if (element.GetAttribute("name") == pi.Name)
    {
    object value = null;
    value = element.InnerText;
    Type type = pi.GetType();
    pi.SetValue(_m, Convert.ChangeType(value, pi.PropertyType), null);
    }
   }

   }
   _ls.Add((T)_m);

  }
  #endregion

  return _ls;
  }
  catch
  {
  return null;
  }

 }
View Code

  

  既然登陆成功了,我们就可以将数据库下的所有库和表查询出来并展示给我们进行选择了。
数据库/表的查询展示:

  技术分享

查询所有数据库方法:    

select * from [sysdatabases] order by [name]

查询所有表方法:

select [id], [name] from [sysobjects] where [type] = ‘u‘ order by [name]

  得到数据库的数据后就可以绑定到Tree上了,并绑定点击事件,当点击的时候再展示该库下所有的表,这样就可以选择要操作的表了。

表属性查询方法:

 /// <summary>
 /// 获取表信息
 /// </summary>
 /// <param name="tablename"></param>
 /// <returns></returns>
 public DataTable GetTableInfo(string tablename)
 { try
  {
  string sql = string.Format(@"
SELECT 
 表名 = d.name,--case when a.colorder=1 then d.name else ‘‘ end,
 表说明 = case when a.colorder=1 then isnull(f.value,‘‘) else ‘‘ end,
 字段序号 = a.colorder,
 fieldname = a.name,
 标识 = case when COLUMNPROPERTY( a.id,a.name,‘IsIdentity‘)=1 then ‘√‘else ‘‘ end,
 主键 = case when exists(SELECT 1 FROM sysobjects where xtype=‘PK‘ and parent_obj=a.id and name in (
   SELECT name FROM sysindexes WHERE indid in(
   SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then ‘√‘ else ‘‘ end,
 sqltype = b.name,
 占用字节数 = a.length,
 长度 = COLUMNPROPERTY(a.id,a.name,‘PRECISION‘),
 小数位数 = isnull(COLUMNPROPERTY(a.id,a.name,‘Scale‘),0),
 允许空 = case when a.isnullable=1 then ‘√‘else ‘‘ end,
 默认值 = isnull(e.text,‘‘),
 fieldexplain = isnull(g.[value],‘‘)
FROM 
 syscolumns a
left join 
 systypes b 
on 
 a.xusertype=b.xusertype
inner join 
 sysobjects d 
on 
 a.id=d.id and d.xtype=‘U‘ and d.name<>‘dtproperties‘
left join 
 syscomments e 
on 
 a.cdefault=e.id
left join 
 
 sys.extended_properties g 
on 
 a.id=g.major_id and a.colid=g.minor_id 
left join 
 sys.extended_properties f 
on 
 d.id=f.major_id and f.minor_id=0
where 
 d.name=‘{0}‘ --如果只查询指定表,加上此条件
order by 
 a.id,a.colorder", tablename);
  return Service.Data.SqlHelper.DataTable(sql);
  }
  catch (Exception ex)
  {
  throw (ex);
  }
 }
 }

代码模板:

  模板也是存储在了XML文件里,可以配置多个模板。
生成代码:
  这里用的方法很基本了,简单的循环所有字段信息根据模板预留的占位符进行替换生成,与一些常用的代码生成器的做没法比了,不过本着方便自己的想法,这样的工具还是挺好用的,有空大家也可以学习学习他们的做法也是对自己的知识积累。

//我在替换中使用的一些占位符

[tablename] 可替换表的名称 /**************************/ [list][list]为多字段循环列表 [list=1][/list]多字段循环列表,会自动去掉最后元素的最后一个符号。 /**************************/ 循环体内容中可替换内容有: [fieldname] 字段名称 [sqltype] 字段类型 [fieldexplain] 字段说明 /**************************/ [replace=xxx][/replace]筛选替换循环体内的变量。 xxx可填:sqltype、fieldname、fieldexplain

文档生成:

  后来因为要常看一些表的结构和梳理数据文档所以就弄了一个富文本编辑插件,可以把表的属性生成一个table表格,方便查看,也可以复制到word里面。

  技术分享

知识点:
  1,窗体之间如何互相触发事件刷新数据
    这个工具就两个界面,当主界面main加载的时候会判断是否已登陆了,如果没有登陆就会加载登陆窗体login。在login中登陆成功后会刷新main中的tree。
    实现代码:

    在login中定义事件并在登陆成功后触发事件。

 /// <summary>
 /// 定义登陆成供事件委托
 /// </summary>
 public delegate void LoginSuccess();
 /// <summary>
 /// 定义登陆成功事件
 /// </summary>
 public event LoginSuccess LoginSuccessEvent;
 
 /// <summary>
 /// 触发登陆成功事件
 /// </summary>
 protected virtual void OnLoginSuccessEvent()
 {
  var handler = LoginSuccessEvent;
  if (handler != null) handler();
 }

 private void button1_Click(object sender, EventArgs e)
 {
  this.OnLoginSuccessEvent();
 }

  main在调用login时,绑定事件回调函数。

 private void main_Load(object sender, EventArgs e)
 {
  login lg=new login();
  lg.LoginSuccessEvent += LoginSuccess;
  lg.Show();
 }

 void LoginSuccess()
 {
  textBox1.Text = DateTime.Now.ToString("u");
 }

好了,暂时就总结这么多东西。

 

一个很简单的SqlServer生成常用C#语句工具的诞生

标签:

热心网友 时间:2022-04-08 23:57

在安装VS的时候会自动安装一个sql server的精简版express版本,这个版本的功能不是很多,建议卸载然后安装一个开发版或其他版本数据库。
在安装的过程中会出现一个关于实例选择的问题,你可以按自己喜好看是默认实例还是命名实例,如果是卸载后安装建议选择命名实例,随便起个名字。
登陆数据库你可以在百度上查具体的方法,至于你说到的添加修改删除数据,都是基于表操作的,sql语法是
添加 insert into 表 values(数据......) 或
insert into 表 select 数据......
修改 update 表 set 列 = 新值 where 筛选条件
删除 delete from 表 where 筛选条件
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 湖北省职称网上申报系统传照片是个倒的为什么? MIPS常用来描述计算机的运算速度,其含义是()。A. 每秒钟处理百万个字符 B. 每分钟处理百万个字符 C. 每秒 MIPS是什么意思,说具体点 小米尾插换个多少钱? .MIPS常用来描述计算机的运算速度,其含义是 .MIPS常用来描述计算机的运算速度,其含义是 请回答的详细一些 W7旗舰版,怎么在设置(好像是在控制面板里)可以让鼠标悬浮在某个窗口的时候,就选定那个窗口 湖北教师副高职称网上申报上传的证书只签字未盖单位公章咋办? 男士金链子在金店可以卖掉吗,有段时间没戴了? 想把黄金项链卖掉要带什么去回收店?发票已经找不到了 民生信用卡被冻结如何重新解冻? 想把黄金项链卖了哪里回收 小白问题。我家百兆路由器,路由器能用的宽带上限是不是就100M。用300M宽带,要换千兆路由器? 突然不爱说话怎么回事怎么办 突然发现自己变得很安静不爱说话不想接触人是怎么回事? 如果一个人突然不想说话了,是怎么回事啊? 突然发现自己越来越不想说话,越来越自卑,该怎么办? 很多时候突然就不想说话怎么回事 为什么有时候会突然不想和某一个人说话? 一个人突然变得不爱说话是什么原因? 青蛙有哪些种类? 元宵节是古代情人节? 这是什么品种的青蛙? 护理文职一分钟自我介绍 遇到问题忍不住事,就得立刻解决,不然睡不着觉,没有城府,求大神推荐点能提升自己,平和心态的书,谢谢 心态和格局的书 提高自己心胸和心境看什么书? 看什么书能让自己学到很多,放宽心态提高素质 有什么培养乐观心态的书 哪些书籍对心态性格有关呢? 介绍一些关于心态方面的好书 关于心态方面的好书和心理方面的好书 怎样锻炼身体各部分肌肉? 延迟退休引发各界争议,新提案却广受好评,对哪些人群的影响更大? “延迟退休”已确定,第一批受影响的是谁?答案已明确 怎样锻炼身体的各个部分的肌肉?(不用任何工具) 2020年退休养老保险新政,哪些人群或将受到影响 延迟退休实施原则公布,什么类型的职工受影响最大,为什么? 怎样自己锻炼身体各个部位的肌肉? 延迟退休,将对哪些人有利?哪些人不利呢?