大家好,我是刚开始学习ASP.NET写数据库网站的新手我用Access新建了一个MDB数据库,数据库里面只有一个表,名为UsersUsers表里面包含三个字段:
ID: 自动编号(设为主键)
Username: 文本类型
Password: 文本类型然后尝试在Visual Studio 2010中以VB.NET程序在表Users中插入一新行但当程序代码执行到 Command.ExecuteNonQuery时报错
错误描述为: INSERT INTO 语法错误程序代码如下,烦请各位帮忙分析并解决一下,谢谢!Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dbName As String
Dim StrConnection As String
Dim Sql As String
Dim Conn As OleDbConnection
Dim Command As OleDbCommand dbName = ConfigurationManager.AppSettings("dbPath")
StrConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbName)
Conn = New OleDbConnection(StrConnection)
Conn.Open() Sql = "INSERT INTO Users (username,password) VALUES (@username,@password)"
Command = New OleDbCommand(Sql, Conn) Command.Parameters.AddWithValue("@username", txtUsername.Text)
Command.Parameters.AddWithValue("@password", txtPassword.Text) Command.ExecuteNonQuery() Command.Dispose()
Command = Nothing
Conn.Close()
Conn = Nothing
StrConnection = Nothing
Sql = Nothing
End Sub
ID: 自动编号(设为主键)
Username: 文本类型
Password: 文本类型然后尝试在Visual Studio 2010中以VB.NET程序在表Users中插入一新行但当程序代码执行到 Command.ExecuteNonQuery时报错
错误描述为: INSERT INTO 语法错误程序代码如下,烦请各位帮忙分析并解决一下,谢谢!Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dbName As String
Dim StrConnection As String
Dim Sql As String
Dim Conn As OleDbConnection
Dim Command As OleDbCommand dbName = ConfigurationManager.AppSettings("dbPath")
StrConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbName)
Conn = New OleDbConnection(StrConnection)
Conn.Open() Sql = "INSERT INTO Users (username,password) VALUES (@username,@password)"
Command = New OleDbCommand(Sql, Conn) Command.Parameters.AddWithValue("@username", txtUsername.Text)
Command.Parameters.AddWithValue("@password", txtPassword.Text) Command.ExecuteNonQuery() Command.Dispose()
Command = Nothing
Conn.Close()
Conn = Nothing
StrConnection = Nothing
Sql = Nothing
End Sub
解决方案 »
- 用户在页页上,点击新建后, 怎么在服务端创建文件夹呢?? 注意,不是.aspx,而是.ashx
- sqlserver2005 数据库存储过程加密后怎么解密
- 在线等,急!
- 请教一个自制数据源的问题
- 还是datagrid删除和添加的问题
- 请教大家,两台window2003的服务器,一台做WEB服务器,一台做DB服务器,可以就是连不上
- 求一个题的答案
- cache、dataset、Dataview相互影响的问题
- C# .NET Web编程使用ListView控件和SqlDataSource控件显示数据库数据
- 奇怪~~datagrid中 ButtonColumn到底有没有Commandname属性??
- 请问在Application_Error里可以使用session吗?
- windows7 下面 Forms验证 自动失效的问题
INSERT INTO Users (username,password) VALUES (@username,@password) 用
INSERT INTO Users (username,password) VALUES ('+txtUserName.text+','+txtPassword.Text+')来代替
初学者不必用的那么花哨还传参,直接弄个简单的sql语句执行下就行了
Command.Parameters.AddWithValue(new SqlParameter("@password", txtPassword.Text))
txtPassword.Text = "b"期待数据库也写入"a"和"b",但实际上却直接写入了 "@username"和"@passowrd",为什么这样呢?应该怎么解决?
INSERT INTO Users (username,password) VALUES('"+txtUserName.text+"','"+txtPassword.Text+"')
无意说什么,只是初学者连sql语句写的还不标准的要求什么用传参的方式,其实我觉得lz如果用sql拼出来绝对不会出现这个问题。
当然5楼说的很有道理,传参是比拼sql安全了很多,但是请不要误导初学者,难道为了好的coding习惯,导致一个问题nnnnn久也解决不了? 无论什么都要相对而言。
OleDbCommand.Parameters.AddWithValue("@username", Tbuser.Text);
OleDbCommand.Parameters.AddWithValue("@password", Tbcode.Text);
OleDbCommand.Parameters.AddWithValue("@mailbox", Tbmailbox.Text);编译器错误信息: CS0120: 非静态的字段、方法或属性“System.Data.OleDb.OleDbCommand.Parameters.get”要求对象引用
是不是要输入system引用的?