小弟主要想实现创建帐套的功能,让用户输入数据库名称、路径两个参数,然后在创建;
下面是让用户输入一个数据库参数的代码,把所有的参数用字符串代替就可以执行成功并创建数据库,
到代参数就失败了,不知哪里错了;请各位大侠多多帮助初学者,最好有实例或更好的方法,E_MAIL:[email protected],分数不够再加,多谢!
try
{
this.Cursor=Cursors.WaitCursor;
mycmd=mycnc.CreateCommand();
mycmd.CommandText=@"use master create database @dbname on primary (name=@dbname1,filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\@dbname2',size=5mb, maxsize=10mb, filegrowth=5%) log on (name=@dbname3, filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\@dbname4',size=1mb)";
mycmd.Parameters.Add("@dbname",SqlDbType.VarChar,50);
mycmd.Parameters.Add("@dbname1",SqlDbType.VarChar,50);
mycmd.Parameters.Add("@dbname2",SqlDbType.VarChar,50);
mycmd.Parameters.Add("@dbname3",SqlDbType.VarChar,50);
mycmd.Parameters.Add("@dbname4",SqlDbType.VarChar,50);
mycmd.Parameters["@dbname"].Value=this.textBox1.Text;
mycmd.Parameters["@dbname1"].Value=this.textBox1.Text+"_dat";
mycmd.Parameters["@dbname2"].Value=this.textBox1.Text+".mdf";
mycmd.Parameters["@dbname3"].Value=this.textBox1.Text+"_log";
mycmd.Parameters["@dbname4"].Value=this.textBox1.Text+".ldf";
int result=mycmd.ExecuteNonQuery();
this.Cursor=Cursors.Default;
return;}
catch
{
MessageBox.Show("Fait");
this.Cursor=Cursors.Default;
return ;}
还有:use master
if not exists (select * from sysobjects where name='credb')
begin
create proc dbo.credb
@dbname varchar(20),
@dbname1 varchar(20),
@dbname2 varchar(20),
@dbname3 varchar(20),
@dbname4 varchar(20)
as
exec('create database '+@dbname+' on primary(name='+@dbname1+',filename='+@dbname2+',size=5mb,maxsize=10mb,filegrowth=5%)'+
'log on (name='+@dbname3+',filename='+@dbname4+',size=1mb)')
end为什么执行整个语句失败,单独执行BEGIN..END 之间的语句就可以成功;
提示错误:“服务器: 消息 156,级别 15,状态 1,行 4
在关键字 'proc' 附近有语法错误。
服务器: 消息 137,级别 15,状态 1,行 11
必须声明变量 '@dbname'。
请各位高手指教,感谢!分数不够可以再加!”
下面是让用户输入一个数据库参数的代码,把所有的参数用字符串代替就可以执行成功并创建数据库,
到代参数就失败了,不知哪里错了;请各位大侠多多帮助初学者,最好有实例或更好的方法,E_MAIL:[email protected],分数不够再加,多谢!
try
{
this.Cursor=Cursors.WaitCursor;
mycmd=mycnc.CreateCommand();
mycmd.CommandText=@"use master create database @dbname on primary (name=@dbname1,filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\@dbname2',size=5mb, maxsize=10mb, filegrowth=5%) log on (name=@dbname3, filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\@dbname4',size=1mb)";
mycmd.Parameters.Add("@dbname",SqlDbType.VarChar,50);
mycmd.Parameters.Add("@dbname1",SqlDbType.VarChar,50);
mycmd.Parameters.Add("@dbname2",SqlDbType.VarChar,50);
mycmd.Parameters.Add("@dbname3",SqlDbType.VarChar,50);
mycmd.Parameters.Add("@dbname4",SqlDbType.VarChar,50);
mycmd.Parameters["@dbname"].Value=this.textBox1.Text;
mycmd.Parameters["@dbname1"].Value=this.textBox1.Text+"_dat";
mycmd.Parameters["@dbname2"].Value=this.textBox1.Text+".mdf";
mycmd.Parameters["@dbname3"].Value=this.textBox1.Text+"_log";
mycmd.Parameters["@dbname4"].Value=this.textBox1.Text+".ldf";
int result=mycmd.ExecuteNonQuery();
this.Cursor=Cursors.Default;
return;}
catch
{
MessageBox.Show("Fait");
this.Cursor=Cursors.Default;
return ;}
还有:use master
if not exists (select * from sysobjects where name='credb')
begin
create proc dbo.credb
@dbname varchar(20),
@dbname1 varchar(20),
@dbname2 varchar(20),
@dbname3 varchar(20),
@dbname4 varchar(20)
as
exec('create database '+@dbname+' on primary(name='+@dbname1+',filename='+@dbname2+',size=5mb,maxsize=10mb,filegrowth=5%)'+
'log on (name='+@dbname3+',filename='+@dbname4+',size=1mb)')
end为什么执行整个语句失败,单独执行BEGIN..END 之间的语句就可以成功;
提示错误:“服务器: 消息 156,级别 15,状态 1,行 4
在关键字 'proc' 附近有语法错误。
服务器: 消息 137,级别 15,状态 1,行 11
必须声明变量 '@dbname'。
请各位高手指教,感谢!分数不够可以再加!”
解决方案 »
- vs2010安装
- crystal report使用群组分页
- 关于c#异常处理的一个问题
- 谁可以帮我一下啊 !!我真的没有办法呢,新人不能受欺负哇!!
- 关于vsnet2005中的backgroundWorker组件如何避免多个同时运行?
- 请问如何实现记录的上下移动?
- 新手问一个简单的问题
- 有两个内存中的DataTable,如何将下面两个DataTable合成一个DataTable,急!
- 如何最优写这条SQL语句(附表结构)
- 请问C# 自已写的winForm,如何获得浏览器(如360浏览器)里网页中选取的部分内容(文本和图片)?
- C# 实时显示界面
- 谁知道那有下基于C#的windows程序设计的教程啊?
use master
if not exists (select * from sysobjects where name='credb')
begin
....
end
改为:
use master
if exists (select * from sysobjects where name='credb')
begincreate proc dbo.credb
@dbname varchar(20),
@dbname1 varchar(20),
@dbname2 varchar(20),
@dbname3 varchar(20),
@dbname4 varchar(20)
as
exec('create database '+@dbname+' on primary(name='+@dbname1+',filename='+@dbname2+',size=5mb,maxsize=10mb,filegrowth=5%)'+
'log on (name='+@dbname3+',filename='+@dbname4+',size=1mb)')
end
go
Drop procedure credb
end
go
mycmd.CommandText=@"use master create database @dbname on primary (name='youDBName',filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\dbname2',size=5mb, maxsize=10mb, filegrowth=5%) log on (name=dbname3, filename='D:\Program Files\Microsoft SQL Server\MSSQL\Data\dbname4',size=1mb)";
不能使用:
mycmd.Parameters.Add("@dbname",SqlDbType.VarChar,50);