如何用C#为sql server数据库分表创建一个新表

西西软件下载最安全的下载网站、值得信赖的软件下载站!
您的位置:
→ C#怎么创建SQL Server数据库函数代码实现
这里我们主要介绍C#创建,包括介绍通过CREATE TABLE这句SQL语句完成创建表的操作等方面。 在创建了数据库连接对象后,我们就可以在程序中运用它了。首先,我们在程序中动态地C#创建SQL Server数据库。我们将数据库创建在C:\mysql目录下,所以读者要练习该实例的话得先在C:下创建一个名为mysql的文件夹,否则会出错!创建数据库的关键是函数中的sql对象,通过该对象我们指定了数据库文件的一些基本属性。之后,我们新创建了一个SqlCommand对象,通过该对象我们就实际完成了对数据库的操作。函数的实现如下:
 private void button1_Click(object sender, System.EventArgs e)
  {  // 打开数据库连接
  if( conn.State != ConnectionState.Open) conn.Open();
  string sql = "CREATE DATABASE mydb ON PRIMARY" +"(name=test_data,filename = ‘C:\\mysql\\mydb_data.mdf’, size=3," +"maxsize=5,filegrowth=10%)log on" +"(name=mydbb_log,filename=‘C:\\mysql\\mydb_log.ldf’,size=3," +"maxsize=20,filegrowth=1)";
  cmd = new SqlCommand(sql, conn);  try  {  cmd.ExecuteNonQuery();  }  catch(SqlException ae)  {  MessageBox.Show(ae.Message.ToString());  }  }
创建了数据库后,我们得为其创建表,表是数据库中的基本对象。我们通过CREATE TABLE这句SQL语句完成创建表的操作,表被创建后,我们就确定了其模式(Schema)。之后,我们还通过INSERT语句向该表中添加了四条记录以为后用。函数的实现如下:
private void button2_Click(object sender, System.EventArgs e)  {  // 打开数据库连接
  if( conn.State == ConnectionState.Open) conn.Close();
  ConnectionString ="Integrated Security=SSPI;" + "Initial Catalog=" + "Data Source=";
  conn.ConnectionString = ConnectionS
  conn.Open();
  sql = "CREATE TABLE myTable"+ "(myId INTEGER CONSTRAINT PKeyMyId PRIMARY KEY,"+ "myName CHAR(50),
  myAddress CHAR(255), myBalance FLOAT)";  cmd = new SqlCommand(sql, conn);  try  {  cmd.ExecuteNonQuery();  // 向表中添加记录  sql = "INSERT INTO myTable(myId, myName, myAddress, myBalance) "+ "VALUES (1001, ‘Puneet Nehra’, ‘A 449 Sect 19, DELHI’, 23.98 ) " ;
  cmd = new SqlCommand(sql, conn);
  cmd.ExecuteNonQuery();
  sql = "INSERT INTO myTable(myId, myName,myAddress, myBalance) "+ "VALUES (1002, ‘Anoop Singh’, ‘Lodi Road, DELHI’, 353.64) " ;
  cmd = new SqlCommand(sql, conn);
  cmd.ExecuteNonQuery();
  sql = "INSERT INTO myTable(myId, myName, myAddress, myBalance) "+ "VALUES (1003, ‘Rakesh M’, ‘Nag Chowk, Jabalpur M.P.’, 43.43) " ;
  cmd = new SqlCommand(sql, conn);
  cmd.ExecuteNonQuery();
  sql = "INSERT INTO myTable(myId, myName, myAddress, myBalance) "+ "VALUES (1004, ‘Madan Kesh’, ‘4th Street, Lane 3, DELHI’, 23.00) " ;
  cmd = new SqlCommand(sql, conn);  cmd.ExecuteNonQuery();  }  catch(SqlExceptionae) {  MessageBox.Show(ae.Message.ToString());  } }
完成此操作后,我们可以在本机的SQL Sever企业管理器中打开mydb数据库并找到该表了。
阅读本文后您有什么感想? 已有
人给出评价!
访问量多的C#一步一步开发自己的自动代码生成工具之一:获取SQL2005的数据库表结构 - C#技巧 - 大学IT网
当前位置: >
> C#一步一步开发自己的自动代码生成工具之一:获取SQL2005的数据库表结构
关键词:&&阅读(594) 赞(30)
[摘要]本文主要介绍如何使用C#一步一步开发自己的自动代码生成工具之一:获取SQL2005的数据库表结构,与大家分享学习。
多年的代码开发工作中,用过的自动代码生成工具也不少了,有复杂的大家伙,也有公司同事们自己写的东东,不过除了CodeSmith等大家伙之外,能自己制定模板的并不多。
&&&&&& 不能使用模板,就意味着生成的代码不能更改,而生成代码的水平,就看开发人的了,实在是用的不舒服。
&&&&&& 那么,我们自己做一个好了。
&&&&&&&第一步:获取数据库的表列表和单表的表结构
&&&&&&& 大家知道,数据库的表结构一般都是存储在系统表里的,针对不同的数据库,获取方式也不一样,我这里只是介绍针对SQL Server 2005的SQL,至于其他的数据库,就靠大家自己摸索了。
&&&&&&& 1。获取数据库列表
&&&&&&&& 针对SQL2005,对于所有的数据库,都存在系统表“sysdatabases”中,获取起来比较简单
&&&&&&&&&select * from sysdatabases where name not in ('master','model','msdb','tempdb')
&&&&&&&& where后面的语句是为了不获取SQL的系统数据库,大家可以不加条件,就能获取所有数据库了。
&&&&&&&&&2。获取指定数据库中的所有数据表/视图的列表
&&&&&&&& 针对SQL2005,所有表/视图,都存储在“sysobjects”系统表中,而所有表的字段信息,则主要存储在“syscolumns”系统表中,另外,还有一个重要的系统表“systypes”主要存储数据库中系统定义和用户自定义的数据类型。
&&&&&&&& 获取所有表的名字和每个表的字段数目:
string SqlStr_Tbl = @"select sysobjects.name ,count(*) as ColsCount
from syscolumns,sysobjects,systypes
where syscolumns.id=sysobjects.id
and syscolumns.xtype=systypes.xtype
and sysobjects.type='U'
and systypes.name &&'_default_'
and systypes.name&&'sysname'
group by sysobjects.name
order by sysobjects.name";
获取所有视图的名字和每个视图的字段数目:
string SqlStr_Vw = @"select sysobjects.name ,count(*) as ColsCount
from syscolumns,sysobjects,systypes
where syscolumns.id=sysobjects.id
and syscolumns.xtype=systypes.xtype
and sysobjects.type='V'
and systypes.name &&'_default_'
and systypes.name&&'sysname'
group by sysobjects.name
order by sysobjects.name";
&3。获取指定表的所有字段属性
&&&&&&&&&&& 下面的语句中,只要代入不同的表/视图名,就可以获取该表的所有字段名字、字段长度、字段类型、字段说明、字段是否允许为空、是否主键、是否自增长字段等。
string SqlStr = @"select syscolumns.name as ColName ,systypes.name as ColTypeName
, syscolumns.length, sys.extended_properties.value as Mark
,syscolumns.isnullable as AllowNull
,IsPK = Case
when exists
from sysobjects
inner join sysindexes
on sysindexes.name = sysobjects.name
inner join sysindexkeys
on sysindexes.id = sysindexkeys.id
sysindexes.indid = sysindexkeys.indid
where xtype='PK'
and parent_obj = syscolumns.id
and sysindexkeys.colid = syscolumns.colid
,IsIdentity = Case syscolumns.status when 128 then 1 else 0 end
from syscolumns
inner join systypes on
syscolumns.xtype = systypes.xtype
and systypes.name &&'_default_'
and systypes.name&&'sysname'
left outer join sys.extended_properties on
sys.extended_properties.major_id=syscolumns.id
and minor_id=syscolumns.colid
where syscolumns.id = (select id from sysobjects where name='" + TableName + @"')
order by syscolumns.colid ";
好了,到现在为止,已经获取到了我们所需要的数据。
相关C#技巧推荐如何用C#为SQL Server数据库创建一个新表? - CSDN博客
有两种方法来为数据库创建一个新表,
我们可以用
写出并执行
语句来创建表:
private void CreateTableBtn_Click(object sender, System.EventArgs e)
&&&&&&&&&&
&&&&&&&&&&&
if (conn.State == ConnectionState.Open)
&&&&&&&&&&&&&&&
conn.Close();
&&&&&&&&&&&
ConnectionString = &Integrated Security=SSPI;& +
&&&&&&&&&&&
&Initial Catalog=& +
&&&&&&&&&&&
&Data Source=&;
&&&&&&&&&&&
conn.ConnectionString = ConnectionS
&&&&&&&&&&&
conn.Open();
&&&&&&&&&&&
sql = &CREATE TABLE myTable& +
&&&&&&&&&&&
&(myId INTEGER CONSTRAINT PKeyMyId PRIMARY KEY,& +
&&&&&&&&&&&
&myName CHAR(50), myAddress CHAR(255), myBalance FLOAT)&;
&&&&&&&&&&&
cmd = new SqlCommand(sql, conn);
&&&&&&&&&&&
cmd.ExecuteNonQuery();
我们可以引用
函数来创建一个表
private void CreateTableBtn_Click(object sender, System.EventArgs e)
&&&&&&&&&&&
建立数据库服务器
&&&&&&&&&&&
string connectionString = &...&;
&&&&&&&&&&&
SqlConnection connection =
&&&&&&&&&&&&&&&&
new SqlConnection(connectionString);
&&&&&&&&&&&
Server server =
&&&&&&&&&&&&&&&&
new Server(new ServerConnection(connection));
&&&&&&&&&&&
在我的个人数据库中创建表
&&&&&&&&&&&
Database db = server.Databases[&mydb&];
&&&&&&&&&&&
&&&&&&&&&&&
Table newTable = new Table(db, &TestTable&);
&&&&&&&&&&&
&&&&&&&&&&&
Column idColumn = new Column(newTable, &ID&);
&&&&&&&&&&&
idColumn.DataType = DataType.I
&&&&&&&&&&&
idColumn.Nullable =
&&&&&&&&&&&
idColumn.Identity =
&&&&&&&&&&&
idColumn.IdentitySeed = 1;
&&&&&&&&&&&
idColumn.IdentityIncrement = 1;
&&&&&&&&&&
&&&&&&&&&&&
Column titleColumn = new Column(newTable, &Title&);
&&&&&&&&&&&
titleColumn.DataType = DataType.VarChar(50);
&&&&&&&&&&&
titleColumn.Nullable =
&&&&&&&&&&&
对象添加列
&&&&&&&&&&&
newTable.Columns.Add(idColumn);
&&&&&&&&&&&
newTable.Columns.Add(titleColumn);
&&&&&&&&&&&
为表创建一个主键的索引
&&&&&&&&&&&
Index index = new Index(newTable, &PK_TestTable&);
&&&&&&&&&&&
index.IndexKeyType = IndexKeyType.DriPrimaryK
&&&&&&&&&&&
主键索引包括
&&&&&&&&&&&
index.IndexedColumns.Add(new IndexedColumn(index, &ID&));
&&&&&&&&&&&
表中添加一个新的索引
&&&&&&&&&&&
newTable.Indexes.Add(index);
&&&&&&&&&&&
在数据库中实际创建一个表
&&&&&&&&&&&
newTable.Create();
相关帖子:查看: 3114|回复: 4
c#如何读取SQL Server数据库里表的第一列所有的数据,在复制给数组
该用户从未签到主题帖子积分
新手上路, 积分 18, 距离下一级还需 32 积分
新手上路, 积分 18, 距离下一级还需 32 积分
马上加入IBC,查看更多教程
才可以下载或查看,没有帐号?
c#如何读取SQL Server数据库里表的第一列所有的数据,在复制给数组。以解决VS2005查询数据库时表里没有该数据报错的问题!
求大神给个代码或方法!
TA的每日心情开心5&天前签到天数: 786 天[LV.10]以坛为家III主题帖子积分
用dataset&&得到第一行的数据 , 用数组接收第一行的数据
IBC编程社区
该用户从未签到主题帖子积分
新手上路, 积分 18, 距离下一级还需 32 积分
新手上路, 积分 18, 距离下一级还需 32 积分
用dataset&&得到第一行的数据 , 用数组接收第一行的数据
我想要的是第一列的数据呀
该用户从未签到主题帖子积分
新手上路, 积分 8, 距离下一级还需 42 积分
新手上路, 积分 8, 距离下一级还需 42 积分
select 列名 *&&from 表名
该用户从未签到主题帖子积分
新手上路, 积分 8, 距离下一级还需 42 积分
新手上路, 积分 8, 距离下一级还需 42 积分
楼上正解!
select 列名 *&&from 表名取出所有的列,返回一个DataSet,然后循环读取这个DataSet,把里面的值赋给数组
积极宣传本站,为本站带来更多注册会员
积极宣传本站,为本站带来更多的用户访问量
长期对论坛的繁荣而不断努力,或多次提出建设性意见
活跃且尽责职守的版主
曾经为论坛做出突出贡献目前已离职的版主
为论坛做出突出贡献的会员
IBC编程社区通知
IBC微信公众号:ibcbcsq
IBC编程社区群号
Powered by一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码 - 设计前沿
一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码
文章出处:网上收集 作者:未知 发布时间:
????? 关键词:一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码
* Created on
* Title: QuickCoder
* Description: 一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码
曾经在学校听殷兆粼教授这样讲过,UML将来应该能够根据已经设计好的业务逻辑,自动生成数据库表和数据间的关联等,并生成实体代码,最好能够再生成部分业务逻辑代码。这样我们的设计就跟画画一样了,我们要做的就是画UML图。数据库结构、程序代码都自动生成。
这里是我在公司的一个项目中为了把数据库实体表生成C#实体而写的一段代码。功能不多,但是可以省敲很多代码。
* Company:
Author: Shuqun, Zhou
import java.io.*;
import java.sql.*;
import java.util.*;
* @author Administrator
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class QuickCoder {
public static Map MSSQLServerDataTypeCSharpTypeMap = new HashMap();
MSSQLServerDataTypeCSharpTypeMap.put(&char&, &string&);
MSSQLServerDataTypeCSharpTypeMap.put(&varchar&, &string&);
MSSQLServerDataTypeCSharpTypeMap.put(&nvarchar&, &string&);
MSSQLServerDataTypeCSharpTypeMap.put(&text&, &string&);
MSSQLServerDataTypeCSharpTypeMap.put(&datetime&, &System.DateTime&);
MSSQLServerDataTypeCSharpTypeMap.put(&int&, &int&);
MSSQLServerDataTypeCSharpTypeMap.put(&int identity&, &float&);
MSSQLServerDataTypeCSharpTypeMap.put(&float&, &float&);
MSSQLServerDataTypeCSharpTypeMap.put(&bit&, &string&);
MSSQLServerDataTypeCSharpTypeMap.put(&numeric&, &double&);
MSSQLServerDataTypeCSharpTypeMap.put(&money&, &double&);
public static void prt(Object o) {
System.out.println(o);
public static void prt(int i) {
System.out.println(i);
public static void table2CSharp(ResultSetMetaData rsmd, String namespace, String className) throws IOException, SQLException {
StringBuffer cs = new StringBuffer();
String line = System.getProperty(&line.separator&);
cs.append(&using S&).append(line).append(line);
cs.append(&/**&).append(line);
cs.append(& * Generate by QuickCoder.&).append(line);
cs.append(& * 使用前请修改文件名和类名(去掉`Auto_'前缀)&).append(line);
cs.append(& */&).append(line).append(line);
cs.append(&namespace &).append(namespace).append(& {&).append(line);
cs.append(&\tpublic class &).append(className).append(& {&).append(line);
int c = rsmd.getColumnCount();
String dbType, type,
for (int i = 1; i &= i++) {
name = rsmd.getColumnLabel(i).replace(' ', '_');
dbType = rsmd.getColumnTypeName(i);
t = MSSQLServerDataTypeCSharpTypeMap.get(dbType);
if (t != null) {
type = t.toString();
type = &____& + dbT
prt(namespace + && + className + & & + dbType);
cs.append(&\t\t&).append(type)
.append(& m_&).append(name).append(&;&).append(line);
/* 由于同组一工程师说这种C#的getter, setter写法不好,我就改成下面那种写法了
不过我认为他是在用Java的思想审视C#,我找不到这样写的不好之处
cs.append(&\t\tpublic &).append(type).append(& &).append(name).append(& &).append(&{&).append(line);
cs.append(&\t\t\tget {&).append(line);
cs.append(&\t\t\t\treturn m_&).append(name).append(&;&).append(line);
cs.append(&\t\t\t}&).append(line);
cs.append(&\t\t\tset {&).append(line);
cs.append(&\t\t\t\tm_&).append(name).append(& = &).append(&&).append(line);
cs.append(&\t\t\t}&).append(line);
cs.append(&\t\t}&).append(line);
cs.append(line);
cs.append(&\t\tpublic &).append(type).append(& Get&).append(name).append(&() {&).append(line);
cs.append(&\t\t\treturn this.m_&).append(name).append(&;&).append(line);
cs.append(&\t\t}&).append(line);
cs.append(line);
cs.append(&\t\tpublic void Set&).append(name).append(&(&).append(type).append(& &).append(name).append(&) {&).append(line);
cs.append(&\t\t\tthis.m_&).append(name).append(& = &).append(name).append(&;&).append(line);
cs.append(&\t\t}&).append(line);
if (&int&.equals(type) || &float&.equals(type) || &double&.equals(type)) {
cs.append(line);
cs.append(&\t\tpublic string&).append(& Get&).append(name).append(&AsString() {&).append(line);
cs.append(&\t\t\treturn this.m_&).append(name).append(&.ToString();&).append(line);
cs.append(&\t\t}&).append(line);
cs.append(line);
cs.append(&\t\tpublic void Set&).append(name).append(&(string s) {&).append(line);
cs.append(&\t\t\tthis.m_&).append(name).append(& = &).append(type).append(&.Parse(s);&).append(line);
cs.append(&\t\t}&).append(line);
cs.append(line);
cs.append(&\t}&).append(line);
cs.append(&}&).append(line);
//prt(cs);
File file = new File(&C:/tmp&, className + &.cs&);
FileOutputStream fos = new FileOutputStream(file);
fos.write(cs.toString().getBytes());
fos.close();
public static void main(String[] args) throws Exception {
prt(&Start&);
Class.forName(&sun.jdbc.odbc.JdbcOdbcDriver&);
Connection con = DriverManager.getConnection(&jdbc:odbc:SCE&, &SCE&, &SCE&);
Connection con2 = DriverManager.getConnection(&jdbc:odbc:SCE&, &SCE&, &SCE&);
Statement stmt = con2.createStatement();
DatabaseMetaData meta = con.getMetaData();
ResultSet rs = meta.getTables(null, null, null, null);
String tableName, tableT
ResultSet rs2;
while (rs.next()) {
//System.out.println(rsmd.getColumnCount());
tableName = rs.getString(&TABLE_NAME&);
tableType = rs.getString(&TABLE_TYPE&);
if (&TABLE&.equals(tableType) && tableName.startsWith(&tb_&)) {
//prt(tableName);
rs2 = stmt.executeQuery(&SELECT * FROM [& + tableName + &]&);
table2CSharp(rs2.getMetaData(), &Sce.Action.Objects&, &Auto_O_& + tableName.substring(3, tableName.length()).replace('-', '_'));
rs2.close();
rs.close();
stmt.close();
con.close();
con2.close();
prt(&End&);
??????????????

我要回帖

更多关于 sql server数据库建表 的文章

 

随机推荐