稍等
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[detail]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[detail]
GOCREATE TABLE [dbo].[detail] (
[id] [bigint] IDENTITY (1, 1) NOT NULL ,
[title] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[author] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[keyword] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[content] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[authorcontact] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[field] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

解决方案 »

  1.   

    好像没错阿,你可以把连接后的sql字符串复制到sql analyser里面去运行一下吗?
    如果出错了,可以看到下面的出错信息的
    然后再作分析
      

  2.   

    首先将title.Text.ToString()等字符串中的'替换为''',再传到sql串中
    如:string.Replace(title.Text.ToString(),"'","'''");
      

  3.   

    在你sql这个string的赋值语句后面下断点,然后从监视窗口把sql语句贴到服务器资源管理器的数据表的sql语句里,执行一下看看是什么问题,然后在sql环境下调试通了,再写回代码。
      

  4.   

    content字段定义成了text类型,这种类型不能通过insert直接插入值的。
      

  5.   

    strSQL="insert into detail (title,author,keyword,content,authorcontact) 
    values('"+title.Text.ToString()+"',
           '"+author.Text.ToString()+"',
           '"+keyword.Text.ToString()+"',
           '"+content.Text.ToString()+"',
           '"+contact.Text.ToString()+"'
           )";
      

  6.   

    把单引号换成两个单引号用replace()方法  string str='a'
    str.Replace("',"''")如下:
    string a='a'
    string strQuery=insert into table (title,....) values('"+a.Replace("'","''")+"',...)
      

  7.   

    加上Replace("'","''")把所有的单引号换成两个insert into detail(title,author,keyword,content,authorcontact) 
    values('"+title.Text.ToString().Replace("'","''")+"',
           '"+author.Text.ToString().Replace("'","''")+"',
           '"+keyword.Text.ToString().Replace("'","''")+"',
           '"+content.Text.ToString().Replace("'","''")+"',
           '"+contact.Text.ToString().Replace("'","''")+"'
           )
      

  8.   

    楼主注意了,因为Sql Server的查询字符串中单引号"'"是用来表示字符串型的(就像c#内的关键字,是不能直接用的),所以当你要插入单引号时,必需将其变成两表单引号"''"才行的(类似于c#内的转义字符)
      

  9.   

    同意cwbboy(好想失恋) ,但最好是使用SqlParameter,这种直接插入有安全问题,比如:
    在你的contact文本框输入"') Drop table detail--",就可以把你的detail删掉.