我的SQL语句哪里错了

dan83 2004-11-14 02:03:13
对SQL语句还是不熟,只好请教下各位
"UPDATE[user]
SET username= ? ,address= ? ,Email= ?
WHERE (username=?)
AND("+"Email= ? OR ? IS NULL AND Email IS NULL)
AND(address= ? OR ? IS NULL AND addr"+"ess IS NULL) ";
...全文
121 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
marvelstack 2004-11-14
  • 打赏
  • 举报
回复
添加参数的顺序对应一下试试。
wingnal 2004-11-14
  • 打赏
  • 举报
回复
是不是中英文状态的问题啊
dan83 2004-11-14
  • 打赏
  • 举报
回复
//
// oleDbDeleteCommand1
//
this.oleDbDeleteCommand1.CommandText=
"DELETE FROM [user]
WHERE (username=?)
AND (Email=? OR ? IS NULL AND Email IS "+"NULL)
AND (address=? OR ? IS NULL AND address IS NULL)";
this.oleDbDeleteCommand1.Connection=this.oleDbConnection1;
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_username",
System.Data.OleDb.OleDbType.VarWChar,20,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_Email",
System.Data.OleDb.OleDbType.VarWChar,50,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_Email1",
System.Data.OleDb.OleDbType.VarWChar,50,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_address",
System.Data.OleDb.OleDbType.VarWChar,50,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_address1",
System.Data.OleDb.OleDbType.VarWChar,50,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));

//
// oleDbConnection1
//
this.oleDbConnection1.ConnectionString =
@"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;
Data Source=C:\Documents and Settings\Bluewater\My Documents\db2.mdb;
Mode=Share Deny None;
Extended Properties="""";
Jet OLEDB:System database=;
Jet OLEDB:Registry Path="""";
Jet OLEDB:DataBase Password="""";
Jet OLEDB:Engin Type=5;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="""";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Campact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False";
//
// dataSet11
//
this.dataSet11.DataSetName="DataSet1";
this.dataSet11.Locale=new System.Globalization.CultureInfo("zh-CN");
this.dataSet11.Namespace="http://www.tempuri.org/DataSet1.xsd";
this.DataGrid1.CancelCommand+=new
System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
this.DataGrid1.EditCommand+=new
System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
this.DataGrid1.UpdateCommand+=new
System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
this.Load+=new System.EventHandler(this.Page_Load);
((System.ComponentModel.ISupportInitialize)(this.dataSet11)).EndInit();
}
#endregion


private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Datagrid1.EditItemIndex=e.Item.ItemIndex;
Datagrid1.Databind();
}

private void DataGrid1_cancelcommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Datagrid1.EditItemIndex=-1;
Datagrid1.Databind();
}

private void DataGrid1_updatecommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string username;
string userAddr;
string userEmail;
TextBox tb;
dataset1.userrow r;

tb=(textbox) e.Item.Cells[1].Controls[0];
username=tb.Text;
tb=(textbox) e.Item.Cells[2].Controls[0];
userAddr=tb.Text;
tb=(textbox) e.Item.Cells[3].Controls[0];
userEmail=tb.Text;
r=dataset11.user.findbyusername(username);
r.address=userAddr;
r.Email=userEmail;
oledbdataadapter1.update(dataset11);
Datagrid1.EditItemIndex=-1;
Datagrid1.Databind();
}
}
}
dan83 2004-11-14
  • 打赏
  • 举报
回复
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;


namespace WebApplication1
{
/// <summary>
/// Web应用程序中修改数据库内容。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
protected System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
protected System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
protected System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;
protected System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;
protected System.Data.OleDb.OleDbConnection oleDbConnection1;
protected WebApplication1.DataSet1 dataSet11;
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
oleDbDataAdapter1.Fill(dataset11);
if(!IsPostBack)
{
DataGrid1.DataBind();
}
}


#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.oleDbDataAdapter1 = new System.Data.OleDb.OleDbDataAdapter();
this.oleDbSelectCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbInsertCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbUpdateCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbDeleteCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbConnection1 = new System.Data.OleDb.OleDbConnection();
this.dataSet11 = new WebApplication1.DataSet1();
((System.ComponentModel.ISupportInitialize)(this.dataSet11)).BeginInit();
//
// oleDbDataAdapter1
//
this.oleDbDataAdapter1.DeleteCommand = this.oleDbDeleteCommand1;
this.oleDbDataAdapter1.InsertCommand = this.oleDbInsertCommand1;
this.oleDbDataAdapter1.SelectCommand = this.oleDbSelectCommand1;
this.oleDbDataAdapter1.TableMappings.AddRange(new
System.Data.Common.DataTableMapping[]{
new System.Data.Common.DataTableMapping("Table","user",
new System.Data.Common.DataColumnMapping[]
{
new System.Data.Common.DataColumnMapping("username","username"),
new System.Data.Common.DataColumnMapping("address","address"),
new System.Data.Common.DataColumnMapping("Email","Email")})});

this.oleDbDataAdapter1.UpdateCommand = this.oleDbUpdateCommand1;

//
// oleDbSelectCommand1
//
this.oleDbSelectCommand1.CommandText = "SELECT username, address, Email FROM [user]";
this.oleDbSelectCommand1.Connection = this.oleDbConnection1;
//
// oleDbInsertCommand1
//
this.oleDbInsertCommand1.CommandText=
"INSERT INTO[user] (username,address,Email) VALUES(?,?,?)";

this.oleDbInsertCommand1.Connection=this.oleDbConnection1;
this.oleDbInsertCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("username",
System.Data.OleDb.OleDbType.VarWChar,20,"username"));
this.oleDbInsertCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("address",
System.Data.OleDb.OleDbType.VarWChar,50,"address"));
this.oleDbInsertCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Email",
System.Data.OleDb.OleDbType.VarWChar,50,"Email"));
//
// oleDbUpdateCommand1
//
this.oleDbUpdateCommand1.CommandText=
"UPDATE [user]
SET username= a ,address= b ,Email= c;
WHERE (username=a)AND("+"Email= c OR c IS NULL AND Email IS NULL)AND(address= b OR b IS NULL AND addr"+"ess IS NULL) ";
this.oleDbUpdateCommand1.Connection=this.oleDbConnection1;
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("username",
System.Data.OleDb.OleDbType.VarWChar,20,"username"));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("address",
System.Data.OleDb.OleDbType.VarWChar,50,"address"));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Email",
System.Data.OleDb.OleDbType.VarWChar,50,"Email"));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_username",
System.Data.OleDb.OleDbType.VarWChar,20,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_Email",
System.Data.OleDb.OleDbType.VarWChar,50,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_Email1",
System.Data.OleDb.OleDbType.VarWChar,50,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_address",
System.Data.OleDb.OleDbType.VarWChar,50,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
this.oleDbUpdateCommand1.Parameters.Add(new
System.Data.OleDb.OleDbParameter("Original_address1",
System.Data.OleDb.OleDbType.VarWChar,50,
System.Data.ParameterDirection.Input,false,((System.Byte)(0)),
((System)(0)),"username",
System.Data.DataRowVersion.Original,null));
zhongwanli 2004-11-14
  • 打赏
  • 举报
回复
不知道你那么多问号是怎么一回事

还是用确切的值来说说吧
parol2910 2004-11-14
  • 打赏
  • 举报
回复
UPDATE Northwind.dbo.Shippers
SET CompanyName = 'United Shippers'
WHERE CompanyName = 'United Packages'

照这种格式从写一遍.
Andy__Huang 2004-11-14
  • 打赏
  • 举报
回复
"UPDATE[user]
SET username= ? ,address= ? ,Email= ?
WHERE (username=?)
AND("+"Email= ? OR ? IS NULL AND Email IS NULL)
AND(address= ? OR ? IS NULL AND addr"+"ess IS NULL) ";----->這一行

改成
...........
AND(address= ? OR ? IS NULL AND addr"+"isnull(ess,'')='')

因為null與任何一個值相加都是null
OneDotRed 2004-11-14
  • 打赏
  • 举报
回复
或者你在外部判断这个值是否为null
OneDotRed 2004-11-14
  • 打赏
  • 举报
回复
? IS NULL
我觉得有点问题
在这里,?应该是table的column,而不是column值
shenkedong9 2004-11-14
  • 打赏
  • 举报
回复
你发上去的程序里的SQL语句,你用个变量在调试窗口里把SQL读出来在去执行一下看看报什么错。
dan83 2004-11-14
  • 打赏
  • 举报
回复
任务栏里是说
常数中有换行符
无效的表达式项“)”
无效的表达式项“?”
应输入“)”
应输入“;”
这五种错误,但我映象中的SQL语句就是这样的啊
cnming 2004-11-14
  • 打赏
  • 举报
回复
"UPDATE [user]
SET username= ? ,address= ? ,Email= ?
WHERE (username=?)
AND("+"Email= ? OR (? IS NULL) AND Email IS NULL)
AND(address= ? OR (? IS NULL) AND addr"+"ess IS NULL) ";

看你的SQL,分析起来只能如上写法了,请问两个地方的(? IS NULL)中的问号是什么意思?

按理,这里的问号应该用字段名

另外,你既然使用了参数,就必须把你的完整的代码贴出,要不人家无法具体分析你的程序在哪里错了

Email、username等应该都是文本的吧,如果是的话,加上单引号试试看
shenkedong9 2004-11-14
  • 打赏
  • 举报
回复
你把SQL语句打印出来,有可能是你的那些字段的类型问题。
dan83 2004-11-14
  • 打赏
  • 举报
回复
UPDATE[user]

应该是 UPDATE [user]
中间加上空格
试过了,还是不对
卡纳瓦咯 2004-11-14
  • 打赏
  • 举报
回复
同意 xrascal(横刀夺爱)
xinbin1122 2004-11-14
  • 打赏
  • 举报
回复
不知道你的?实则么替换的
孟子E章 2004-11-14
  • 打赏
  • 举报
回复
打印出sql语句看看是什么
暗石绿 2004-11-14
  • 打赏
  • 举报
回复
UPDATE[user]

应该是 UPDATE [user]
中间加上空格

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧