insert into插入数据库时语法出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了insert into插入数据库时语法出错相关的知识,希望对你有一定的参考价值。

public partial class register : System.Web.UI.Page

protected void Page_Load(object sender, EventArgs e)



protected void Button1_Click(object sender, EventArgs e)

string cnstring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Server.MapPath("") + @"\App_Data\Database.mdf;Integrated Security=True;User Instance=True"; //本地数据库文件
DataTable dt = new DataTable("tmp");
SqlDataAdapter da = new SqlDataAdapter("select mm from users where xh='" + TextBox1.Text + "'", cnstring);
da.Fill(dt);
if (dt.Rows.Count > 0)

Label1.Text="该学号已被注册";

else if(TextBox2.Text!=TextBox3.Text)

Label1.Text = "两次密码输入不一致";

string uxh = TextBox1.Text.ToString();
string umm = TextBox2.Text.ToString();
string uxm = TextBox4.Text.ToString();
string uxy = TextBox5.Text.ToString();
string usd = TextBox6.Text.ToString();
string uss = TextBox7.Text.ToString();
string sql = string.Format("insert into users(xh,mm,xm,xy,sd,ss) values(uxh, umm, uxm, uxy, usd, uss)");
SqlConnection sqlcon=new SqlConnection();
sqlcon.ConnectionString=cnstring;
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand(sql,sqlcon);
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
Label1.Text = "注册成功,请按返回进入登陆页面";


数据库放在App_data,有id,xh,mm,xm,xy,sd,ss列,id设为标识列,运行没提示错误,网页按提交时同时出错,“' ' 附近有语法错误”,请高手解答

 插入语句写错了:

 //insert into database
  string xh = SQLString.GetSafeSqlString(DropDownList1.Text);
  string mm = SQLString.GetSafeSqlString(TB.Text);
  //后面的xm,xy,sd,ss我就不一一写了,如果嫌麻烦就把sql语句后面的xh等直接换成TextBox.Text之类的
 string sql = string.Format("insert into users(xh,mm,xm,xy,sd,ss) values('0','1','2','3','4','5')",xh,mm,xm,xy,sd,ss);                
    //下面是通过数据集绑定的数据库
 // DataBase db = new DataBase();
 // db.GetDataSetSql(sql);

如果你的后台数据库设置了id为主键不为空,那又会出现错误。插入时需要把id也写进sql语句,如:

 string sql = string.Format("insert into users(id,xh,mm,xm,xy,sd,ss) values('0','1','2','3','4','5','6')",id,xh,mm,xm,xy,sd,ss);

id就自己定义了,自增或是其他的都可以。

个人意见,仅供参考。

参考技术A

    xh是字符串类型还是数字类型

    mm,xm,xy,sd,ss分别是什么类型

    users 表名有可能与关键字重复,两边加上中括号改成[users]

改了上面两点再看其他的

追问

要怎么声明xh,mm,xm,xy,sd,ss的类型呢?前四个是字符串,后两个是int,要怎么改呢?

追答

总之sql语句的规则就是字符串两边要加单引号,数字两边不加。建议你网上多搜搜怎么拼接sql字符串。

参考技术B string sql = string.Format("insert into users(xh,mm,xm,xy,sd,ss) values(‘0’, ‘1’,‘2’,‘3’, ‘4’,‘5’)",(uxh, umm, uxm, uxy, usd, uss);

你自己吧变量放在引号里面 那就成字符串了 相当于你在 数据库 直接执行的语句就是
insert into users(xh,mm,xm,xy,sd,ss) values(uxh, umm, uxm, uxy, usd, uss)
而值确没传进去!~
参考技术C 用我的 吧 你修改一下
string ConnStr = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True;User Instance=True";
(你用你的这个"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Server.MapPath("") + @"\App_Data\Database.mdf;Integrated Security=True;User Instance=True"; )
SqlConnection conn = new SqlConnection(ConnStr);
conn.Open();
SqlCommand mon = conn.CreateCommand();
mon.CommandText = "insert into users values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "')";
try

int a = mon.ExecuteNonQuery();
Label3.Text = "注册成功!";

catch (Exception ee)

Label1.Text = "用户名存在!";

if (TextBox1.Text == "")

Label1.Text = "请输入用户名!";


if (TextBox2.Text == "")

Label2.Text = "请输入密码!";

if ((TextBox2.Text) == (TextBox3.Text))

Label2.Text = "两次密码相同!";


你把你的string uxh = TextBox1.Text.ToString();
string umm = TextBox2.Text.ToString();
string uxm = TextBox4.Text.ToString();
string uxy = TextBox5.Text.ToString();
string usd = TextBox6.Text.ToString();
string uss = TextBox7.Text.ToString();
string sql = string.Format("insert into users(xh,mm,xm,xy,sd,ss) values(uxh, umm, uxm, uxy, usd, uss)");
删掉
insert 语句 改成 SqlCommand sqlcmd = new SqlCommand("写insert 语句",sqlcon); 或者string sql="insert 语句";
SqlCommand sqlcmd = new SqlCommand(sql,sqlcon); 你的 SqlDataAdapter da = new SqlDataAdapter("select mm from users where xh='" + TextBox1.Text + "'", cnstring);
da.Fill(dt);
if (dt.Rows.Count > 0)

Label1.Text="该学号已被注册";

else if(TextBox2.Text!=TextBox3.Text)

Label1.Text = "两次密码输入不一致";
自己加上就可以了

以上是关于insert into插入数据库时语法出错的主要内容,如果未能解决你的问题,请参考以下文章

向access数据库插入出现“insert into 语法错误”

MySQL关联表插入数据(insert into select语法)

数据库 insert into 插入数据

MS Access 中的 INSERT INTO 语法错误

在 INSERT INTO 语句中插入值时出现语法错误。 -VB 和 ACCESS 2013

当我尝试通过 C# 将日期插入 Access 数据库时出现“INSERT INTO 语句中的语法错误”错误