C# 连接SQLServer数据库自动生成model类代码
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类代码的更多相关文章
- django根据已有数据库表生成model类
django根据已有数据库表生成model类 创建一个Django项目 django-admin startproject 'xxxx' 修改setting文件,在setting里面设置你要连接的数据 ...
- 使用T4为数据库自动生成实体类
T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...
- Asp.Net Core如何根据数据库自动生成实体类
通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...
- SpringBoot整合Mybatis 使用generator自动生成实体类代码、Mapper代码、dao层代码
1.新建一个SpringBoot项目,并引入Mybatis和mybatis-generator相关的依赖. <dependency> <groupId>org.springfr ...
- 使用mybatis-generator在自动生成Model类和Mapper文件
使用mybatis-generator插件可以很轻松的实现mybatis的逆向工程,即,能通过表结构自动生成对应的java类及mapper文件,可以大大提高工作效率,并且它提供了很多自定义的设置可以应 ...
- c# 利用t4模板,自动生成Model类
我们在用ORM(比如dapper)的时候,很多时候都需要自己写Model层(当然也有很多orm框架自带了这种功能,比如ef),特别是表里字段比较多的时候,一个Model要写半天,而且Model如果用于 ...
- Entity Framework连接Mysql数据库并生成Model和DAL层
Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架.相比于LINQ TO SQL,EF框架具有很明显的优势: EF框架 ...
- mybatis自定义代码生成器(Generator)——自动生成model&dao代码
花了两天的时间研究了下mybatis的generator大体了解了其生成原理以及实现过程.感觉generator做的非常不错,给开发者也留足了空间.看完之后在generator的基础上实现了自定义的生 ...
- MVC Html辅助方法DropDownList的简单使用、连接MYSQL数据库用自定义model类接收
附上启发链接:https://www.cnblogs.com/CreateMyself/p/5424894.html [HttpGet] public ActionResult Edit(int id ...
随机推荐
- Js 之正则验证手机号、QQ、身份证等
// 常见的 正则表达式 校验 // QQ号.手机号.Email.是否是数字.去掉前后空格.是否存在中文.邮编.身份证.URL.日期格式.IP let myRegExp = { // 检查字符串是否为 ...
- Nessus简单使用
1.更新插件 上次搭建完后总觉得不踏实,因为老是提示插件多久没更新了,然后果断花了1.25美刀买了台vps,终于把最新的插件下载下来了,总共190M,需要的QQ私信我.
- CodeMirror在线代码编辑器使用
CodeMirror官网地址为:https://codemirror.net/ CodeMirror作为一款代码编辑器,其应用场景主要是在线网站写代码.如现在的leetcode.洛谷.code-vs等 ...
- golang 文件传输小demo(转载)
转载地址:https://www.cnblogs.com/qq702368956/p/10195497.html 获取文件信息需要用到os. Stat接口,发送文件前开启接收者(服务端),启动客户端先 ...
- react项目如何运行
react项目如何运行 一.总结 一句话总结: npm i 安装好package.json的 指定插件后,npm start 启动项目 二.react项目的安装与运行 转自或参考:react项目的安装 ...
- ‘Skimming-Perusal’ Tracking: A Framework for Real-Time and Robust Long-term Tracking
‘Skimming-Perusal’ Tracking: A Framework for Real-Time and Robust Long-term Tracking 2019-09-05 21:1 ...
- Microsoft Office Project 2016使用心得(一)
Microsoft Office Project 2016使用心得(一) 新创建一个项目后的准备工作 1.修改项目开始时间 因为项目默认显示的是2009年的信息,所有视图都是从2009年开始,不便于查 ...
- redis连接池——JedisPool和JedisCluster的介绍与使用
目录 Jedis使用方式的介绍 Redis连接池介绍 创建连接池配置文件 单机版的Redis连接池 集群版的Redis连接池 总结 Jedis使用方式的介绍 Jedis就是Java实现的操作Redis ...
- preHandle、postHandle与afterCompletion
preHandle 调用时间:Controller方法处理之前 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行 若返回false,则中断执行,注意:不会 ...
- [LeetCode] 330. Patching Array 数组补丁
Given a sorted positive integer array nums and an integer n, add/patch elements to the array such th ...