我正在使用SQL Server 2008,我似乎无法删除并创建数据库.
我尝试了几种不同的方法,但我总是在它似乎被创建之前没有丢弃或试图"使用".
我目前的尝试看起来像这样.
use master;
GO
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'test')
BEGIN
DROP DATABASE [test];
END
GO
CREATE DATABASE [test];
GO
use [test];
GO
Run Code Online (Sandbox Code Playgroud)
将GO被建议在MS论坛,以此来阻止选择数据库时出现的一些问题.
有了这个,我目前得到的输出(与现有的同名数据库):
消息3702,级别16,状态4,行3
无法删除数据库"test",因为它当前正在使用中.
消息1801,级别16,状态3,行1
数据库'测试'已存在.选择其他数据库名称.
消息2714,级别16,状态6,行2
数据库中已存在名为"staff_type"的对象.
对我数据库中的每个表重复最后2行.
所以我试图写一些需要抓取命令输出的东西,然后虐待它然后将它传递给另一个程序.
但我有一个问题,我无法弄清楚如何获得命令输出并将其存储在下面是我的样本
if(fork() == 0){
execl("/bin/ls", "ls", "-1", (char *)0);
/* hopefully do something with the output here*/
}else{
*other stuff goes here*
}`
Run Code Online (Sandbox Code Playgroud)
所以我基本上想知道是否有任何方法可以从"execl"获取输出并将其传递给其他东西(例如通过将其存储在某种缓冲区中).
任何建议都会很棒.谢谢你们.."
我试图拒绝不是格式为"03 xxxx xxxx"的所有输入,所以我创建了一个像这样的表
create table records
(
....
num varchar(255) NOT NULL,
...
CONSTRAINT num_check CHECK (num like '03 [0-9]{4} [0-9]{4}')
)
Run Code Online (Sandbox Code Playgroud)
应该(我认为?)接受例如"03 1234 1234".但是,如果我尝试通过sql管理器添加此消息,则会收到错误消息:"INSERT语句与CHECK约束冲突"num_check""
起初我认为我的正则表达式已关闭,但我在其他几个地方尝试过,它接受上面的例子.有任何想法吗?
我正在用C语言写一个二进制文件的结构.char*项和uint8项写得很好,但我似乎在编写uint32项时遇到问题.
我的写作代码在这里.
void writeOut(record *data){
FILE *fp = fopen("output.bin","w");
int i =0;
while(data[i].Name != NULL){
fwrite(data[i].Name, NAME_LEN ,1,fp);
fwrite(&data[i].Value1, sizeof(uint8_t) ,1,fp);
fwrite(&data[i].Value2, sizeof(uint8_t) ,1,fp);
fwrite(&data[i].Id, sizeof(uint32_t) ,1,fp);
fwrite(data[i].Text, TEXT_LEN ,1,fp);
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
我的二进制文件对于记录1(十六进制)看起来像这样(用'|'用于显示字段结尾指向):
52 6F 64 27 72 6F 64 00 00 00 00 00 00 00 00 00 00 | 01 | 04 | 72 92 01 00 | 50 72 6F 6A 65 63 74 20 50 65 61 63 65 00 00 00 00 00 00 …