Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms; namespace ModelFactory
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
DBSelect dbs = new DBSelect();
dbs.ShowDialog();
TableSelect ts = new TableSelect();
ts.ShowDialog();
Application.Run(new ModelFactory());
}
}
}

  

DataBase.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ModelFactory
{
public static class DataBase
{
public static string DataSouse { get; set; }
public static string USER_ID { get; set; }
public static string PASSWORD { get; set; }
public static string database { get; set; }
private static string connectString{ get; set; }
public static List<string> tablenames = new List<string>();
public static void Init()
{ if (string.IsNullOrEmpty(DataBase.database)) DataBase.database = "master";
connectString = string.Format("DATA SOURCE={0};INITIAL CATALOG={1};USER ID={2};PASSWORD={3};", DataSouse, database, USER_ID, PASSWORD);
}
public static SqlConnection SqlOpen()
{
SqlConnection connection = null;
try
{
connection = new SqlConnection(connectString);
//connection.Open();
return connection;
}
catch
{
return connection;
}
}
public static bool SqlClose(SqlConnection connection)
{
if (connection != null)
{
connection.Close();
return true;
}
else
return false;
}
public static DataSet ProcSet(string commandstr)
{
// data.Clear();
DataSet data = new DataSet();
SqlConnection connection = SqlOpen();
SqlDataAdapter aCommand = new SqlDataAdapter(commandstr, connection);
try
{
aCommand.SelectCommand.CommandTimeout = 120;
connection.Open();
aCommand.Fill(data);
SqlClose(connection);
return data;
}
catch (Exception e)
{
return null;
}
finally
{
SqlClose(connection);
}
}
public static int DoProc(string commandstr)
{
SqlConnection connection = SqlOpen();
SqlCommand sqlCom = new SqlCommand(commandstr, connection);
sqlCom.CommandTimeout = 1200;
try
{
connection.Open();
int x = Convert.ToInt32(sqlCom.ExecuteNonQuery());
SqlClose(connection); return x; }
catch (Exception e)
{
return 0;
}
finally
{
SqlClose(connection);
}
}
public static string ProcString(string commandstr)
{
SqlConnection connection = SqlOpen();
SqlCommand sqlCom = new SqlCommand(commandstr, connection);
sqlCom.CommandTimeout = 600;
string str = "";
try
{
connection.Open();
var obj = sqlCom.ExecuteScalar();
if (obj != null)
str = obj.ToString();
return str;
}
catch (Exception e)
{
return "";
}
finally
{
SqlClose(connection);
} }
public static void Add(string tablename)
{
tablenames.Add(tablename);
}
} }

  DBSelect

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace ModelFactory
{
public partial class DBSelect : Form
{
public DBSelect()
{
InitializeComponent();
} private void textBox3_Leave(object sender, EventArgs e)
{
DataBase.DataSouse = textBox1.Text.Trim();
DataBase.USER_ID = textBox2.Text.Trim();
DataBase.PASSWORD = textBox3.Text.Trim();
DataBase.Init();
DataSet ds = DataBase.ProcSet("SELECT d.name,d.database_id FROM sys.databases AS d WHERE d.log_reuse_wait>0"); comboBox1.DisplayMember = "name";
comboBox1.ValueMember = "database_id";
comboBox1.DataSource = ds.Tables[0];
} private void button1_Click(object sender, EventArgs e)
{
DataBase.database = comboBox1.Text;
DataBase.Init();
this.Close(); } private void comboBox1_Enter(object sender, EventArgs e)
{
textBox3_Leave(sender, e);
}
}
}

  TableSelect

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace ModelFactory
{
public partial class TableSelect : Form
{
public TableSelect()
{
InitializeComponent();
listBox2.DisplayMember = "name";
listBox2.ValueMember = "name";
listBox1.DataSource = DataBase.ProcSet("SELECT t.name FROM sys.tables AS t").Tables[0];
listBox1.DisplayMember = "name";
listBox1.ValueMember = "name"; } private void listBox1_DoubleClick(object sender, EventArgs e)
{
//listBox1.Items.Remove(listBox1.SelectedItem);
listBox2.Items.Add(listBox1.SelectedItem);
} private void listBox2_DoubleClick(object sender, EventArgs e)
{
listBox2.Items.Remove(listBox2.SelectedItem);
} private void button3_Click(object sender, EventArgs e)
{ foreach(System.Data.DataRowView row in listBox2.Items)
{
DataBase.Add(row.Row.ItemArray[0].ToString());
}
this.Close();
} }
}

  ModelFactory.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace ModelFactory
{
public partial class ModelFactory : Form
{
private StringBuilder sb = new StringBuilder();
public ModelFactory()
{
InitializeComponent();
foreach (string tablename in DataBase.tablenames)
{
sb.AppendLine(" public class " + tablename);
sb.AppendLine(" {");
DataTable dt = DataBase.ProcSet("select top 1 * from " + tablename).Tables[0];
//DbType dbtype;
string dbtype,columnname; for (int i = 0; i < dt.Columns.Count;i++ )
{
dbtype = CastType(dt.Columns[i].DataType);
columnname = dt.Columns[i].ColumnName;
sb.AppendLine(" public " + dbtype + " " + columnname+" {get;set;}");
}
sb.AppendLine(" }");
}
textBox1.Text = sb.ToString();
}
public string CastType(Type type)
{
if (type == typeof(string))
{
return "string";
}
else if (type == typeof(DateTime))
{
return "DateTime";
}
else if (type == typeof(bool))
{
return "bool";
}
else if (type == typeof(int))
{
return "int";
}
else
{
return type.ToString().Split('.')[type.ToString().Split('.').Length - 1];
} }
}
}

  

C# 连接SQLServer数据库自动生成model类代码的更多相关文章

  1. django根据已有数据库表生成model类

    django根据已有数据库表生成model类 创建一个Django项目 django-admin startproject 'xxxx' 修改setting文件,在setting里面设置你要连接的数据 ...

  2. 使用T4为数据库自动生成实体类

    T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...

  3. Asp.Net Core如何根据数据库自动生成实体类

    通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...

  4. SpringBoot整合Mybatis 使用generator自动生成实体类代码、Mapper代码、dao层代码

    1.新建一个SpringBoot项目,并引入Mybatis和mybatis-generator相关的依赖. <dependency> <groupId>org.springfr ...

  5. 使用mybatis-generator在自动生成Model类和Mapper文件

    使用mybatis-generator插件可以很轻松的实现mybatis的逆向工程,即,能通过表结构自动生成对应的java类及mapper文件,可以大大提高工作效率,并且它提供了很多自定义的设置可以应 ...

  6. c# 利用t4模板,自动生成Model类

    我们在用ORM(比如dapper)的时候,很多时候都需要自己写Model层(当然也有很多orm框架自带了这种功能,比如ef),特别是表里字段比较多的时候,一个Model要写半天,而且Model如果用于 ...

  7. Entity Framework连接Mysql数据库并生成Model和DAL层

    Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架.相比于LINQ TO SQL,EF框架具有很明显的优势: EF框架 ...

  8. mybatis自定义代码生成器(Generator)——自动生成model&dao代码

    花了两天的时间研究了下mybatis的generator大体了解了其生成原理以及实现过程.感觉generator做的非常不错,给开发者也留足了空间.看完之后在generator的基础上实现了自定义的生 ...

  9. MVC Html辅助方法DropDownList的简单使用、连接MYSQL数据库用自定义model类接收

    附上启发链接:https://www.cnblogs.com/CreateMyself/p/5424894.html [HttpGet] public ActionResult Edit(int id ...

随机推荐

  1. PL/SQL Developer插入数据到数据库出现数据中文乱码

    问题描述: 使用PL/SQL Developer往Oracle数据库插入数据,出现中文乱码! 解决办法: 1.执行脚本 select userenv('language') from dual; 结果 ...

  2. 网络营销CPA、CPS、CPM、CPT、CPC 是什么

    网络营销之所以越来越受到重视一个主要的原因就是因为“精准”.相比较传统媒体的陈旧广告形式,网络营销能为广告主带来更为确切的效果与回报,更有传统媒体所没有的即时互动性.很多企业借助于精准的网络营销成为人 ...

  3. tensorflow build failed on Centos with Error: suffix or operands invalid for ""

    在redhat6.5的机器上编译tensorflow1.10,局部环境配好gcc4.8.2后,发现了如题的错误.这是关于AVX指令集识别问题.虽然gcc版本足够高,能够编出使用AVX的汇编代码,但是b ...

  4. coredump之栈溢出

    1.栈溢出引发的core往往出现出现在递归调用中. gdb时看到的特征是: 栈缺失,当前栈地址不可读. 根据栈是逆向生长的特点(栈逆向生长,所以很容易出现类似数组溢出覆盖率函数返回地址,导致函数退出地 ...

  5. sci会议和sci期刊区别是什么

    sci会议和sci期刊区别是什么?从名称上来看就很明显了,一个是学术会议,一个是学术期刊,是不同的学术研究载体,不论是会议论文还是期刊论文,都是受认可的,就目前来看,发表期刊论文的作者要偏多一些,主要 ...

  6. AIX 系统参数配置

    AIX 系统参数配置 原创 Linux操作系统 作者:fanhongjie 时间:2008-05-08 22:46:37 540 0 AIX内核属于动态内核,核心参数基本上可以自动调整,因此当系统安装 ...

  7. chrome浏览器postman 插件安装

    postman 软件功能 模拟各种HTTPrequests 从常用的GET.POST到RESTful的PUT.DELETE…等等.甚至还可以发送文件.送出额外的header. Collection功能 ...

  8. python限定方法参数类型、返回值类型、变量类型等

    typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方 ...

  9. 【JS】AJAX跨域-被调用方与调用方解决方案(二)

    解决跨域问题 跨域问题说明,参考[JS]AJAX跨域-JSONP解决方案(一) 实例,使用上一章([JS]AJAX跨域-JSONP解决方案(一))的实例 解决方案三(被调用方支持跨域-服务端代码解决) ...

  10. PS弧形边缘的去黑色背景色

    按照理论来说,纯色的字体加上纯色的背景,然后保存成png文件,然后用色彩范围选择纯色的背景,去掉背景,这样应该能得到原来设置的纯色的字体,但实际测试后不是这样的.如果是矩形等,是纯色,但是Photos ...