Error when inserting a value containing an apostro

2019-08-26 12:16发布

I'am very new with text datatype in SQL Server 2008

I created table:

CREATE TABLE sample(id int identity,name varchar(20),Yell_Your_self text) 

but I am facing problem with inserting

insert into sample values('ganesh','welcome to india')
insert into sample values('ganesh','welcome to india's largest temple')

First statement is working fine but how to execute second statement?

5条回答
叼着烟拽天下
2楼-- · 2019-08-26 12:53

The issue is that you have a single quote in the string, and a single quote is a string delimiter in SQL.

Try:

INSERT INTO  sample VALUES ('ganesh','welcome to india''s largest temple')
查看更多
Bombasti
3楼-- · 2019-08-26 13:01

Likely throwing an error on the apostrophe in the india's

insert into sample values('ganesh','welcome to india''s largest temple')
查看更多
相关推荐>>
4楼-- · 2019-08-26 13:03

As you are already aware that the trouble SQL is facing is to escape an apostrophy in query, which is fixed i guess. To answer your second question about how to pass value from front end like C#, parametrized query is one of the good approach. As an alternative you can go with this one also which involves string manipulations to prepare a query:

public int get(string val1,string val2) 
{ 
    string temp = string.Concat(val1,"," + val2); // concatenate all your params
    temp = temp.replace("'","''").replace(",","','");  // replace any single qoute with escaped single quote
    string s="insert into sample values('" + temp +  "')"; // append altered string in query
    SqlCommand cmd = new SqlCommand(s,con); 
    con.Open(); 
    int i = cmd.ExecuteNonQuery(); 
    con.Close(); 
    return i; 
}

Hope it helps!

查看更多
霸刀☆藐视天下
5楼-- · 2019-08-26 13:12

try this with passing dynamic value

insert into sample values(@name, N''' + @Yell_Your_self text + ''' )
查看更多
Fickle 薄情
6楼-- · 2019-08-26 13:15

Try this one -

IF OBJECT_ID(N'dbo.sample') IS NOT NULL
   DROP TABLE dbo.[sample]

CREATE TABLE dbo.[sample]
(
      id INT IDENTITY(1,1) PRIMARY KEY
    , name VARCHAR(20)
    , Yell_Your_self VARCHAR(2000)
)

INSERT INTO dbo.[sample] 
VALUES
    ('ganesh', 'welcome to india'), 
    ('ganesh', 'welcome to india''s largest temple')

Update3:

public int get(string val1,string val2) 
{ 
    using(SqlConnection con = new SqlConnection(connectionString))
    {
        con.Open();

        int i = 0;

        using (SqlCommand cmd = new SqlCommand("INSERT INTO dbo.sample (name, Yell_Your_self) VALUES(@val1, @val2)", con))
        {
            cmd.Parameters.AddWithValue("@val1", val1);
            cmd.Parameters.AddWithValue("@val2", val2);
            i = cmd.ExecuteNonQuery();
        }

        con.Close();
        return i;
    }
}
查看更多
登录 后发表回答